题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int count=in.nextInt();// String[] strs=new String[count]; for(int i=0;i<count;i++) { strs[i]=in.next(); } String x=in.next(); int index=in.nextInt(); ArrayList<String> browords=new ArrayList<>(); for(int i=0;i<strs.length;i++) { if((!strs[i].equals(x))&&strs[i].length()==x.length()) { char[] chStr=x.toCharArray();//对比! char[] word=strs[i].toCharArray();// int temp=0; for(int j=0;j<chStr.length;j++) { for(int j2=0;j2<word.length;j2++) { if(word[j]==chStr[j2]) { chStr[j2]='0'; temp++; break; } } } if(temp==chStr.length) { browords.add(strs[i]); } } } System.out.println(browords.size()); if(index>0&&index<browords.size()) { Collections.sort(browords); System.out.println(browords.get(index-1)); } // 判断两个字符串中的字母及其个数是否相同 // public static boolean checkWords(String str1,String str2){ // char[] ch1 = str1.toCharArray(); // char[] ch2 = str2.toCharArray(); // int[] arr = new int[26]; // for(int i = 0; i < ch1.length;i++){ // arr[ch1[i] - 'a']++; // arr[ch2[i] - 'a']--; // } // for(int i = 0; i < 26; i++){ // if(arr[i] != 0){ // return false; // } // } // return true; // } // 注意 hasNext 和 hasNextLine 的区别 //1、兄弟有哪些、以及按序输出第一个---》只,。 //需要sort输出第一个 //2、那个相同、不同------?只用比较所有的字母是否相同且长度相同 } }
public static boolean checkWords(String str1,String str2){char[] ch1 = str1.toCharArray();char[] ch2 = str2.toCharArray();int[] arr = new int[26];for(int i = 0; i < ch1.length;i++){
arr[ch1[i] - 'a']++; arr[ch2[i] - 'a']--; } for(int i = 0; i < 26; i++){ if(arr[i] != 0){ return false; } } return true; }