字符串算法题总结

1、字母统计:

s.charAt(i) - 'a',求字母的ascii码之间的差值。

小写字母ascii码范围:a-z:97-122。

count[s.charAt(i) - 'a']++:求的是字符串中对应字母的个数。这个字母的位置是在count数组里面是有序的。

适用于算法题中的字母变位词有关的题目中,变位词是与字符串相关的面试题中经常出现的一个概念。所谓的变位词是指组成各个单词的字母及每个字母出现的次数完全相同,只是字母排列的顺序不同。例如,"pots"、"stop"和"tops"就是一组变位词。 由变位词的定义可知,变位词具有以下几个特点:

首先,一组变位词的长度一定相同;

其次,组成变位词的字母集合一定相同,并且每个字母出现的次数也相同。

         //所有字符都要统计
         int[] count = new int[128];
          for(int i=0; i < A.length(); i++){
          counts[s.charAt(i)]++;
          }


         //仅统计小写
         int[] count = new int[26];

        for (int i = 0; i < s.length(); i++) {
            counts[s.charAt(i)- 'a']++;
        }

对应的leetcode算法题有:

242. 有效的字母异位词

2、字符串反转

利用stringBuffer的reverse方法

    public String stringRerverse(String  string){
        if(null == string || string.length() <0 ){
            return string;
        }
         return new StringBuffer(string).reverse().toString();
    }

你可能感兴趣的:(算法题,测试技术,java,算法,数据结构)