首页 > 解决方案 > 请帮助我了解以下用途:\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 究竟是如何工作的以及它的用途。

标签: java

解决方案


他们使用 NULL 字符作为变量的起始值,因此当他们迭代时,prev将永远不会匹配传递的字符串的第一个字符(至少,不在您提供的示例中)

它只是一个用于放置最后看到的字符的未初始化位置的占位符。

该功能是用一个计数然后一个字符替换多个字母。


推荐阅读