只需要把apos 和achars 存个字典, 对照一下就是了
存一个
Code: Select all
{
"h8" : 1,
"h9" : 1
}
另,除了检查apos 与 achars 是否有重复坐标,也需要检查apos和apos自身。 achars也是。 更好的做法是把他们放一起遍历。 每一个坐标都对照一下字典。
Moderator: heihei
Code: Select all
{
"h8" : 1,
"h9" : 1
}
哈哈,昨天只想着尽快实现功能,基本没想过怎么写是最优的,反正这点儿运算量对计算机都是小意思 等有时间优化一下xsir317 wrote: ↑2019-09-28 9:04Code: Select all
function convertpos(pos) { var ret = ''; var tmp_str = '';//临时变量,这个也可以改为坐标记录 for (i = 0; i < pos.length; i ++) { //这里检查每个字符的合法性,然后去做转换 if(pos[i] >= 'a' && pos[i] <= 'o') //是字母 { if(tmp_str) { ret += convertsinglepos(tmp_str); } tmp_str = pos[i]; } else //是数字 { tmp_str += pos[i]; } } ret += convertsinglepos(tmp_str); return ret; }
convertpos 其实就是负责做个切割。
切割就是遍历一遍字符串,如果遇到字母,就把前面那段扔去转换;
如果遇到数字,就往后拼。
一遍遍历足够了,不用正则一遍,再遍历3次。
或者你定一个分隔符,或者直接用json存结构化数据如何? 字符串一旦复杂了,解析就很烦,不如直接json。。。
帖子里这些代码片段应该是可以运行的, 循环体里面加点 if 检测应该直接能用了。wind23 wrote: ↑2019-09-28 10:41哈哈,昨天只想着尽快实现功能,基本没想过怎么写是最优的,反正这点儿运算量对计算机都是小意思 等有时间优化一下xsir317 wrote: ↑2019-09-28 9:04Code: Select all
function convertpos(pos) { var ret = ''; var tmp_str = '';//临时变量,这个也可以改为坐标记录 for (i = 0; i < pos.length; i ++) { //这里检查每个字符的合法性,然后去做转换 if(pos[i] >= 'a' && pos[i] <= 'o') //是字母 { if(tmp_str) { ret += convertsinglepos(tmp_str); } tmp_str = pos[i]; } else //是数字 { tmp_str += pos[i]; } } ret += convertsinglepos(tmp_str); return ret; }
convertpos 其实就是负责做个切割。
切割就是遍历一遍字符串,如果遇到字母,就把前面那段扔去转换;
如果遇到数字,就往后拼。
一遍遍历足够了,不用正则一遍,再遍历3次。