题目来源:码蹄集
题目描述:
Python代码实现:
import sys
lines = sys.stdin.readlines()
for i in range(0, len(lines), 2):
s1, s2 = lines[i].strip(), lines[i+1].strip()
st1 = [0] * 26
st2 = [0] * 26
if len(s1) != len(s2):
print("NO")
continue
for c in s1:
st1[ord(c) - ord('A')] += 1
for c in s2:
st2[ord(c) - ord('A')] += 1
st1.sort()
st2.sort()
if st1 != st2:
print("NO")
else:
print("YES")
Java代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String s1 = scanner.next();
String s2 = scanner.next();
int[] st1 = new int[26];
int[] st2 = new int[26];
if (s1.length() != s2.length()) {
System.out.println("NO");
continue;
}
for (char c : s1.toCharArray()) {
st1[c - 'A']++;
}
for (char c : s2.toCharArray()) {
st2[c - 'A']++;
}
Arrays.sort(st1);
Arrays.sort(st2);
boolean flag = true;
for (int i = 0; i < 26; i++) {
if (st1[i] != st2[i]) {
System.out.println("NO");
flag = false;
break;
}
}
if (flag) {
System.out.println("YES");
}
}
scanner.close();
}
}
C++代码实现:
思路及C++代码来源B站up主-轩哥码题:https://www.bilibili.com/video/BV1Ua4y1V7qX/?t=1655.8
#include <bits/stdc++.h>
using namespace std;
string s1, s2;
int st1[30], st2[30];
int main() {
while (cin >> s1>> s2) {
memset(st1, 0, sizeof(st1));
memset(st2, 0, sizeof(st2));
if (s1.length() != s2.length()) {
cout << "NO" << endl;
continue;
}
for (int i = 0; i < s1.length(); i++) {
st1[s1[i] - 'A']++;
st2[s2[i] -'A']++;
}
sort(st1, st1 + 26);
sort(st2, st2 + 26);
bool flag = true;
for (int i = 0; i < 26; i++) {
if (st1[i] != st2[i]) {
cout << "NO" << endl;
flag = false;
break;
}
}
if (flag) {
cout << "YES" << endl;
}
}
return 0;
}