字符串之变形数

112 阅读1分钟

字符串之变形数

题目:给定2个字符串str1和str2,如果str1和str2出现的字符种类和每个字符出现的个数也一样,那么str1与str2互为变形数。请用函数实现。

 

例子:str1="123", str2="231" 返回 true

例子:str1="123", str2="2311" 返回 false;

 

解题思路

方法1:如果字符串str1和str2长度不一样肯定不是变形数,如果相等的话,假设出现的的字符编码为0~256,申请一个长度为256的整形数组map,map[a]=b,表示字符a出现了b次,然后遍历str1,比如遍历到‘a’,那么是a[97]++,,然后遍历str2,当遍历到‘a’,那么map[97]--,如果其中只要有一种情况小于0,那么肯定不是变形数字了,如果想不通,慢慢想,总会想得通的,加油。

方法2:既然str1和str2可以转换成字符编码0~256,而且每个可以把每个字符的编码加起来,如果2个字符编码都相等的话,那么是变形数,前提是字符串的长度是一样的的,以防1+2+3=2+4;的情况出现。

 

下面是实现的java代码

 

public class Changeword {
         public static void main(String[] args) {
			String str1="abcd",str2="abcdd",str3&#