给定2个字符串str1和str2作为输入,返回str1和str2中相同位置的字符计数。
伯爵("纽约","新德里")
4
因为两个字符串共享相同的四个主要字符:"新"
计数("犀""河马&#34)
2
因为' o'占据第四位,并且排在第四位。两个字符串中的第十一个位置。
MyApproach
@Edit
$ xcode-select --install
参数实际输出预期输出
'三等分''类' 0 1
我现在得到正确的输出。
Thanku
答案 0 :(得分:1)
使用单个循环可以更好地完成。使用解决方案找到以下代码: -
class GetCount {
public static void main(String args[]) {
String myString = "rhinoceroses";
String myString1 = "hippopotamus";
count(myString, myString1);
}
/**
* @param myString
* @param myString1
*/
private static void count(String myString, String myString1) {
int i = 0;
int count = 0;
int length = myString.length() < myString1.length() ? myString.length() : myString1.length();
while(i < length) {
if(myString.charAt(i) == myString1.charAt(i)) {
count++;
}
i++;
}
System.out.println("Count is :: " + count);
}
}
答案 1 :(得分:1)
这是一个非常容易理解的紧凑型解决方案。
public static int count(String s1, String s2){
int count = 0;
for (int i = 0 ; i < (s1.length() > s2.length() ? s2 : s1).length() ; i++){
count += s1.charAt(i) == s2.charAt(i) ? 1 : 0;
}
return count;
}
public static void main(String[] args) {
System.out.println(
"New York, New Delhi : "
+ count("New York", "New Delhi"));
System.out.println(
"Rhinoceroses, Hippopotamus : "
+ count ("Rhinoceroses", "Hippopotamus"));
}
New York, New Delhi : 4
Rhinoceroses, Hippopotamus : 2
答案 2 :(得分:0)
您也可以这样做。 (试试) -
public int count(String s1, String s2) {
int result=0;
char[] ch1=s1.toCharArray();
char[] ch2=s2.toCharArray();
if(ch1.length>ch2.length){
for(int i=0;i<ch2.length;i++){
if(ch1[i]==ch2[i]){
result++;
}
}
}
else{
for(int i=0;i<ch1.length;i++){
if(ch2[i]==ch1[i]){
result++;
}
}
}
return result;
}
答案 3 :(得分:0)
以前提供的解决方案是没有用的,因为它们仅在字符按相同顺序排列时才起作用。 这是我的解决方案:
private int commonCharacterCount(String s1, String s2) {
int counter = 0;
List<Character> list = new LinkedList<>();
for (char aChar : s1.toCharArray()) {
list.add(aChar);
}
for (char c : s2.toCharArray()) {
if (list.contains(c)) {
list.remove(Character.valueOf(c));
counter++;
}
}
return counter;
}
不客气:)
答案 4 :(得分:0)
打字稿解决方案。保证约束: 1≤s1.length≤15,1≤s2.length≤15
Float
答案 5 :(得分:0)
由于您需要计算相同位置的字符数,因此我们可以在每次循环(字符串位置)的单循环中检查一下字符数是否相等。并且迭代次数应为str1
和str2
的最小长度(也许我们可以在变量中提取Math.min(str1.length(), str2.length())
)。我使用循环条件下的最小字符串长度将您的解决方案中的if - else
分支压缩为单个循环。
public int countCommonChars(String str1, String str2) {
int commonCharsNumber = 0;
for(int i=0; i< Math.min(str1.length(), str2.length()); i++) {
if (str1.charAt(i) == str2.charAt(i)) {
commonCharsNumber++;
}
}
return commonCharsNumber;
}
答案 6 :(得分:0)
int commonCharacterCount(String s1, String s2) {
Map<String, Integer> mapOfString1 = getOcuurances(s1);
Map<String, Integer> mapOfString2 = getOcuurances(s2);
int counter = 0;
for (Map.Entry<String, Integer> entry : mapOfString2.entrySet()) {
if (mapOfString1.get(entry.getKey()) != null) {
if (mapOfString1.get(entry.getKey()) > entry.getValue()) {
counter += entry.getValue();
} else {
counter += mapOfString1.get(entry.getKey());
}
}
}
return counter;
}
public Map<String, Integer> getOcuurances(String s) {
Map<String, Integer> hashMap = new HashMap<>();
String[] strings = s.split("");
for (int i = 0; i < strings.length; i++) {
if (hashMap.containsKey(strings[i])) {
hashMap.put(strings[i], hashMap.get(strings[i]) + 1);
} else {
hashMap.put(strings[i], 1);
}
}
return hashMap;
}
答案 7 :(得分:-1)
虽然已经有一个已经接受的答案,但我觉得答案不够简洁,因此我给了我(没有编译,请把它视为伪代码)
public static int count(String s1, String s2) {
if (s1 == null || s2==null ||s1.isEmpty() || s2.isEmpty()) {
return 0;
}
int minLength = Math.min(s1.length(), s2.length());
int count = 0;
for (int i < 0; i < minLength; ++i) {
if (s1.charAt(i) == s2.charAt(i)) {
++count;
}
}
return count;
}
答案 8 :(得分:-2)
public int count(String str1, String str2) {
int result = 0;
if (str1.length() == 0 || str2.length() == 0)
return result;
if (str1.length() > str2.length()) {
for (int i = 0; i < str2.length(); i++) {
if (str2.charAt(i) == str1.charAt(i))
result++;
}
}
else {
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) == str2.charAt(i))
result++;
}
}
return result;
}