String

// 1. 基本操作
    charAt(),substring()
    ch = st.toCharArray(); // 字符串转换为字符数组.
// 2. 比较
    if(!this.name.equals(s1.name)){
         return this.name.compareTo(s1.name);
    }
// 3.StringBuilder比较
	s1.toString().equals(s2.toString())

  • 替换/循环移动

    • 使用 charAt(index)和 subSrting(index)(index 和后直到字符串结尾的整个子串)循环移动子串
  • split

    • String[] line = str.split(“ ”) //以空格划分
    • Sting s =line[1].split(“\\.”) // 以.划分
  • 子串后缀链接

    • String temp  ="";
      // 从后往前遍历 sting 
      for(int i=domains.leng-1;i>=0;i--) {
          // 保证子串不断增长
          temp = domains[i] + (temp.equals("")?temp:"."+temp);
      }
      
  • 遍历中使用subString获得后续子串

    • for (String cd : cpdomains) {
      	// ues indexOf 确定''划分的位置下标
          int i = cd.indexOf(' ');
          // ues subString 获得空格前的数值 Integer.valueOf 转化
          int n = Integer.valueOf(cd.substring(0, i));
          
          String s = cd.substring(i + 1);
          for (i = 0; i < s.length(); ++i) {
              if (s.charAt(i) == '.') {
                  // 获得'.'划分的子缀 正向遍历不丢失后续信息
                  String d = s.substring(i + 1);
                  count.put(d, count.getOrDefault(d, 0) + n);
              }
          }
      
  • 筛选:

    • LC811

Tips

替换字符

思路
  • 使用 HashSet保存替换的字典集 Arrays.asList(‘...’)作为参数 保存为 private static final 类型

    private static final HashSet<Character> vowels = new HashSet<>(
            Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
    
  • 使用 s.split(“ ”)删除空格字符

  • 使用 StringBuilder作为append的新字符串 最后 toString返回

Codes
private static final HashSet<Character> vowels = new HashSet<>(
        Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));

public String toGoatLatin(String S) {
    if (S == null || S.length() == 0) {
        return "";
    }

    StringBuilder sb = new StringBuilder();
    StringBuilder suffix = new StringBuilder("a");

    for (String w : S.split(" ")) {
        // 保证前导“ ”在非第一个字符前出现
        if (sb.length() != 0) {
            sb.append(" ");
        }
		// 暂存 w 的首字符 判断是否是元音
        char fChar = w.charAt(0);
        if (vowels.contains(fChar)) {
            sb.append(w);
        } else {
            // 使用 subString 链接除首字符外的字符串
            sb.append(w.substring(1));
            // 再将暂存的首字符追加
            sb.append(fChar);
        }
		// 连续追加
        sb.append("ma").append(suffix);
		// 保证后缀a 随字符的下标增加
        suffix.append("a");
    }
    // System.out.println("sb.toString() = " + sb.toString());
    return sb.toString();
}

sb

  • 连续追加

    • Sb.append(“aa”).append(“string”)
  • 构建二维 string

    • StringBuffer[] sb = new StringBuffer[len];
      for (int i = 0; i < sb.length; i++) sb[i] = new StringBuffer();