字符串
public String convert(String s, int numRows) {
//r表示每一行的索引 [0,numRows-1]
//flag是 1 或者 -1 按从上到下或者从下到上 两个方向区分正负
int r = 0, flag = 1;
//结果列表
StringBuilder[] sb = new StringBuilder[numRows];
for (int k = 0; k < numRows; k++) sb[k] = new StringBuilder();
int i = 0;
while (i < s.length()) {
if (r == numRows) {
flag = -flag;
//区分nowrows 是否为1
if (numRows == 1) r -= 1;
else r -= 2;
} else if (r == -1) {
flag = -flag;
if(numRows == 1) r+=1;
else r+=2;
}
sb[r].append(s.charAt(i++));
r += flag;
}
StringBuilder ans = new StringBuilder();
for (int k = 0; k < numRows; k++) ans.append(sb[k]);
return ans.toString();
}方法1:哈希+比较
方法1.模拟
另外一种写法:
方法2.打表
略
方法1:Hash
每个单词拼接成莫斯密码的字符,送到set中,去重
方法2:位运算

将当前的字符转成二进制,
-表示二进制中的1,.表示二进制中的0,做法有点像二维矩阵的常见转换技巧
方法1:两次Hash映射
Last updated