以空格字符分隔的两个字符串;输入字符串的合法字符集为[a-zA-Z0-9 ],大小写敏感,无需考虑异常输入场景。
如果判定两个字符串异构同质,则输出true,否则输出false。
abc acb
true
2020秋招-后台1
import java.util.*; public class Main{ public static void main(String args[]){ Scanner in=new Scanner(System.in); while(in.hasNext()){ String str1=in.next(); String str2=in.next(); char []ch1=str1.toCharArray(); Arrays.sort(ch1); char []ch2=str2.toCharArray(); Arrays.sort(ch2); int flag=0; for(int i=0;i<ch1.length;i++){ if(ch1[i]!=ch2[i]){ flag=1; break; } } if(flag==0)System.out.println("true"); else System.out.println("false"); } } }
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.HashMap; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] strs = br.readLine().trim().split(" "); if(strs[0].length() != strs[1].length()){ System.out.println(false); }else{ HashMap<Character, Integer> counter = new HashMap<>(); for(int i = 0; i < strs[0].length(); i++){ char c1 = strs[0].charAt(i); char c2 = strs[1].charAt(i); counter.put(c1, counter.getOrDefault(c1, 0) + 1); counter.put(c2, counter.getOrDefault(c2, 0) - 1); } for(char key: counter.keySet()){ if(counter.get(key) != 0){ System.out.println(false); return; } } System.out.println(true); } } }
var line = readline().split(' '); var line_1 = line[0].split(','); line_1 = line_1[0].split(''); var line_2 = line[1].split(','); line_2 = line_2[0].split(''); for (i = 0; i < line_1.length; i++){ for (j = 0; j < line_2.length; j++){ if (line_1[i] == line_2[j]){ line_1.splice(i,1); line_2.splice(j,1); i--; j--; } } } if (line_1.length == 0 && line_2.length == 0){ console.log(true); }else{ console.log(false); }
str1, str2 = input().split(' ') def check(str1, str2): if len(str1) != len(str2): return 'false' dic1, dic2 = {}, {} for i in str1: if i not in dic1: dic1[i] = 1 else: dic1[i] += 1 for j in str2: if j not in dic2: dic2[j] = 1 else: dic2[j] += 1 keys = list(dic1.keys()) for key in keys: if key in dic2 and dic1[key] == dic2[key]: dic1.pop(key) dic2.pop(key) else: return 'false' if dic2: return 'false' return 'true' print(check(str1, str2))
int main(){ char str1[30]={0}; char str2[30]={0}; scanf("%s",str1); scanf("%s",str2); int len1=strlen(str1); int len2=strlen(str2); int i, j, min; char t; for (i = 0; str1[i] != 0; i++) { min = i; for (j = i + 1; str1[j] != 0; j++) { if (str1[j] < str1[min]) min = j; } t = str1[i]; str1[i] = str1[min]; str1[min] = t; } for (i = 0; str2[i] != 0; i++) { min = i; for (j = i + 1; str2[j] != 0; j++) { if (str2[j] < str2[min]) min = j; } t = str2[i]; str2[i] = str2[min]; str2[min] = t; } if(strcmp(str1,str2)==0 ){ printf("true"); }else{ printf("false"); } return 0; }
#include<stdio.h> #include<string.h> int compare(const char *str,const char * pst) { int key=0; while ((*str != '\0')|| (*pst != '\0')) { key += (*str - *pst); str++; pst++; } if ((*str == '\0') && (*pst == '\0') && (key == 0)) { return 1; } return 0; } int main() { char str[100] ; char pst[100] ; gets(str); gets(pst); if (compare(str, pst)) { printf("true\n"); } else { printf("false\n"); } return 0; }
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String[] str = sc.nextLine().split(" "); boolean result = findDifferent(str[0],str[1]); System.out.println(result); } } public static boolean findDifferent(String str1,String str2){ char[] char1 = str1.toCharArray(); char[] char2 = str2.toCharArray(); HashMap<Character,Integer> map = new HashMap<>(); for(int i=0;i<char1.length;i++){ map.put(char1[i],i); } for(int i=0;i<char2.length;i++){ if(map.containsKey(char2[i])){ continue; }else{ return false; } } return true; } }
#include<iostream> #include<map> using namespace std; int main() { string s1; string s2; while (cin >> s1 >> s2) { if (s1.empty() && s2.empty()) { cout<<"false"<<endl; continue; } if (s1.size() != s2.size()) { cout<<"false"<<endl; continue; } map<char, int> m1; map<char, int> m2; for (auto x : s1) { m1[x]++; } for (auto x : s2) { m2[x]++; } map<char, int>::iterator it1 = m1.begin(); map<char, int> ::iterator it2 = m2.begin(); for (; it1 != m1.end() && it2 != m2.end(); ) { if (it1->first == it2->first && it1->second == it2->second) { ++it1; ++it2; } else { cout <<"false"<< endl; break; } } if (it1 == m1.end() && it2 == m2.end()) { cout<<"true"<<endl; } } system("pause"); return 0; }C++使用map解决此类问题,逻辑简单
def Compare(): s = input('请输入两字符串,以空格隔开:') s1,s2 =s.split(' ')[0],s.split(' ')[1] new_s1,new_s2 = list(s1),list(s2) new_s1.sort() new_s2.sort() if len(new_s1) != len(new_s2): return False else: n = [] for i in range(len(new_s1)-1): if new_s1[i] == new_s2[i]: pass else: n.append(i) break if len(n)==0: return True else: return False print(Compare())
public class PingAn1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); String[] s = str.split(" "); if (s[0].length() != s[1].length()) { System.out.println("false"); return; } //可以合并到一个字典里面 26+26+10 设置好偏移量 int[] charDict1 = new int[26]; int[] charDict2 = new int[26]; int[] numDict = new int[10]; for (int i = 0; i < s[0].length(); i++) { char c1 = s[0].charAt(i); char c2 = s[1].charAt(i); if (c1 >= 'a' && c1 <= 'z') { charDict1[c1 - 'a']++; } else if (c1 >= 'A' && c1 <= 'Z') { charDict2[c1 - 'A']++; } else if (c1 >= '0' && c1 <= '9') { numDict[c1 - '0']++; } if (c2 >= 'a' && c2 <= 'z') { charDict1[c2 - 'a']--; } else if (c2 >= 'A' && c2 <= 'Z') { charDict2[c2 - 'A']--; } else if (c2 >= '0' && c2 <= '9') { numDict[c2 - '0']--; } } for (int i = 0; i < charDict1.length; i++) { if (charDict1[i] != 0 || charDict2[i] != 0 || (i < 10 && numDict[i] != 0)) { System.out.println("false"); return; } } System.out.println("true"); }
#include<bits/stdc++.h> #include<iostream> #include<algorithm> using namespace std; int main(){ char str1[30]={0}; char str2[30]={0}; scanf("%s",str1); scanf("%s",str2); int len1=strlen(str1); int len2=strlen(str2); bool flag=false; int count=0; if(len1==len2){ sort(str1,str1+len1); sort(str2,str2+len2); for(int i=0;i<len1;i++){ int n,m; n=str1[i]; m=str2[i]; if(n==m){ count++; } } if(count==len1){ flag=true; } } if(flag==false){ printf("false"); } else printf("true"); return 0; }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); String str1 = input.split(" ")[0]; String str2 = input.split(" ")[1]; System.out.println(judge(str1, str2)); } private static boolean judge(String str1, String str2) { if (str1.length() != str2.length()) { return false; } char[] arr1 = str1.toCharArray(); char[] arr2 = str2.toCharArray(); int sum = 0; for (int i = 0; i < arr1.length; i++) { for (int j = 0; j < arr2.length; j++) { if (arr2[j] != '-') { if (arr2[j] == arr1[i]) { arr2[j] = '-'; sum++; break; } } } } return sum == str1.length(); } }