java - 请帮助我了解以下用途:\0
问题描述
我正在做一个课堂作业,一个朋友帮我写了一些代码,虽然我已经查找了这个字符 \0 并阅读了解释,但我要求有人准确解释它在这个方法中的作用。太感谢了。再说一次,我想知道我的代码中这个字符的确切功能或用途:\0。
public String runLengthEncoding(String str){
String encoded = "";
char prev = '\0';
char curr;
int counter = 1;
for (int i = 0; i < str.length(); i++) {
curr = str.charAt(i);
if(prev == curr) {
//System.out.println("prev == curr");
counter = counter + 1;
}
else {
if(i != 0) {
//System.out.println("encoded += counter + prev");
encoded += Integer.toString(counter) + prev;
//System.out.println(encoded);
counter = 1;
}
}
//System.out.println(Integer.toString(i) + str.length());
if(i == str.length() - 1) {
encoded += Integer.toString(counter) + curr;
//System.out.println(encoded);
counter = 1;
}
prev = curr;
//System.out.println(i + ", " + prev + ", " + curr);
}
return encoded;
该方法的目的是遍历一个字符串,计算字符串顺序索引处相同字符的数量,并生成原始字符串的代表字符串。例如,如果原始字符串是“RRRRSTTT”,则该方法应返回字符串“4R1S3T”。它工作得很好,我刚刚得到了帮助,因为我很新,我想知道 \0 究竟是如何工作的以及它的用途。
解决方案
他们使用 NULL 字符作为变量的起始值,因此当他们迭代时,prev
将永远不会匹配传递的字符串的第一个字符(至少,不在您提供的示例中)
它只是一个用于放置最后看到的字符的未初始化位置的占位符。
该功能是用一个计数然后一个字符替换多个字母。
推荐阅读
- python - 字典值
- jenkins - 无法在 Windows 系统中使用 ffmpeg 在 Jenkins 中录制视频
- mysql - 带有更新的 MYSQL 触发器
- cordova - 从外部网站应用程序引用 Cordova 注入的 JS 文件的位置
- asp.net - 我无法在 itemtemplate 之间的任何内容后面的代码中进行编辑
- dart - 飞镖中的 Hmac sha1 和 base 64 编码
- c# - 在 Nunit 3.0 及更高版本中测试异常
- c++ - 如何用用户的输入填充二维数组?
- angular - 尝试更改为组件时出现 Angular 6+ 路由问题
- javascript - 等效于使用 React 钩子的 componentDidUpdate