遍历字符串数组 检验是否为字母异位词
字母异位词
字符串的长度相同,每个字符的个数相同,但位置不尽相同的两个字符串互为字母异位词
算法流程
- 根据题意,首个字符串必定加入结果列表 list 中,初始化时添加
- 从下标 i 开始遍历( i 从1开始),和 i - 1 对应的元素比对,若为非字母异位词,则当前下标 i 对应的字符串加入 list
- check 检验两个字符串是字母异位词的判断
1.长度不同 返回 false
2.字符数组排序后,遍历时有字符不同 返回 false
3.排序后,所有字符都相同 返回 true
class Solution {
public List<String> removeAnagrams(String[] words) {
ArrayList<String> list = new ArrayList<>(List.of(words[0]));
for(int i = 1; i < words.length; i++)
if(!check(words[i - 1],words[i])) list.add(words[i]);
return list;
}
public boolean check(String a, String b){
if(a.length() != b.length()) return false;
char[] A = a.toCharArray();
char[] B = b.toCharArray();
Arrays.sort(A);
Arrays.sort(B);
for(int i = 0; i < a.length();i++)
if(A[i] != B[i]) return false;
return true;
}
}