string类算法题回顾

#leetcode58

  • 首先要审题,是求最后一个单词的length,而不是最长的单词的length。

  • string的最后可能会有空格,所以要用String的trim()方法去头去尾。

    一个想法是再用String的split(" ")方法,再求最后一个单词的长度。缺点是空间开销大,时间也不见得快。
    看到一个一行的方法是用了减法和String的indexOf(),空间和时间开销都不大。

    public int lengthOfLastWord(String s) {
      return s.trim().length()-s.trim().lastIndexOf(" ")-1;
    }

#leetcode387

  • 因为字母个数有限,可以考虑用长度为26的数组记录每个字符出现的频率。
  • 注意 java里char 'a' 对应的int97

下面是英文字母的char和int互相转化。

  char t = (char)(i + 97);    //其中i是英文字母顺序,如a是0,c是2.
  int i = t - 'a';                   //其中t是字母的char形式,如'a','b'等.

你可能感兴趣的:(string类算法题回顾)