题目描述:
给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1与str2互为变形词。请实现函数判断两个字符串是否互为变形词。
举例:
str1=“123” ,str2=“231”,返回true
str1=“123” ,str2=“2331”,返回false
这个题目不难,考察代码实现能力
首先判断长度
然后 利用字符编码 最大255 申请一个整型数组map(初始化为0哈)
然后 遍历字符串str1 遍历到 就在相应的 字符编码位置 +1
然后 遍历字符串str2 遍历到的就-1 如果减少之后发现小于0 了 直接返回false
如果遍历完str2 没有出现负值 则返回true
public class Solution {
public boolean isDeformation(String s1,String s2) {
if (s1==null||s2==null||s1.length()!=s2.length()) {
return false;
}
char[] ch1=s1.toCharArray();
char[] ch2=s2.toCharArray();
int[] num=new int[256];
for (int i=0; i<ch1.length; i++) {
num[ch1[i]]++;
}
for (int i=0; i<ch2.length; i++) {
num[ch2[i]]--;
if (num[ch2[i]]<0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
Solution s=new Solution();
boolean re=s.isDeformation("123","2331");
System.out.println(re);
}
}