字符重排
此博客链接:https://www.cnblogs.com/ping2yingshi/p/14017921.html
字符重排
题目
题目链接:https://leetcode-cn.com/problems/check-permutation-lcci/
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1 = "abc", s2 = "bca"
输出: true
示例 2:
输入: s1 = "abc", s2 = "bad"
输出: false
说明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
题解
题意:一个字符串的每个字母和另外一个字符串的每个字母一样。
思路:判断一个字符串中的每个字符是否在另外一个字符串中都存在,并且个数相等。
方法:
1.先判断两个字符串长度是都相等,如果长度都不相等,那么其中一个字符串经过重排一定不肯能变成另外一个字符串。
2.长度相等时,判断两个字符串中相同字母出现的次数是否相等,如果不相等,那么其中一个字符串经过重排一定不肯能变成另外一个字符串。
代码
class Solution { public boolean CheckPermutation(String s1, String s2) { int len1=s1.length(); int len2=s2.length(); if(len1!=len2) return false; char emp []={'a','b','c','d','e','f','g','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; //char datas[] = {'a', 'b', 'c'}; //最多52个不同字母,26个大小写 int result1[]=new int[52]; int result2[]=new int[52]; if(len1==len2){ //先判断第一个字符串中每种字母包含多少个 for(int i=0;i<52;i++) { for(int j=0;j<len1;j++) { if(emp[i]==s1.charAt(j)) result1[i]++; } } for(int i=0;i<52;i++) { for(int j=0;j<len2;j++) { if(emp[i]==s2.charAt(j)) result2[i]++; } } } for(int i=0;i<52;i++) { if(result1[i]!=result2[i]) return false; } return true; } }
出来混总是要还的