标签:排序 相同 comm false get sam ascii码 返回 turn
【题目】
给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。
给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。
【代码实现】
方法一:对字符排序比较
import java.util.*; public class Same { public boolean checkSam(String stringA, String stringB) { if(stringA == null || stringB == null || stringA.length() <= 0 || stringB.length() <= 0) return false; if (stringA.length() != stringB.length()){ return false; } char[] arrA = stringA.toCharArray(); char[] arrB = stringB.toCharArray(); //根据每个字符的ASCII码大小进行排序(空格也会被排序) Arrays.sort(arrA); Arrays.sort(arrB); return Arrays.equals(arrA, arrB); } }
方法二:使用HashMap:
链接:https://www.nowcoder.com/questionTerminal/164929d4acd04de5b0ee2d93047b3b20?toCommentId=535049 来源:牛客网 import java.util.*; public class Same { public boolean checkSam(String stringA, String stringB) { if(stringA == null || stringB == null || stringA.length() <= 0 || stringB.length() <= 0) return false; if(stringA.length() != stringB.length()) return false; Map<Character, Integer> map = new HashMap<>(); for(int i = 0; i < stringA.length(); i++){ if(map.containsKey(stringA.charAt(i))){ map.put(stringA.charAt(i), map.get(stringA.charAt(i)) + 1); }else{ map.put(stringA.charAt(i), 1); } } for(int i = 0; i < stringB.length(); i++){ if(map.containsKey(stringB.charAt(i))){ map.remove(stringB.charAt(i)); } } if(!map.isEmpty()){ return false; } return true; } }
标签:排序 相同 comm false get sam ascii码 返回 turn
原文地址:http://www.cnblogs.com/noaman/p/6916874.html