给定两个字符串s1和s2 。任务是采取从第一个字符串一个字符,并从第二字符串一个字符,并检查这两个字符的ASCII值之和为偶数。打印此类对的总数。请注意,这两个字符串均由小写英文字母组成。
例子:
Input: s1 = “geeks”, s2 = “for”
Output: 5
All valid pairs are:
(g, o) -> 103 + 111 = 214
(e, o) -> 101 + 111 = 212
(e, o) -> 101 + 111 = 212
(k, o) -> 107 + 111 = 218
(s, o) -> 115 + 111 = 226
Input: s1 = “abcd”, s2 = “swed”
Output: 8
方法:
- 显然,要使总和为偶数,两个ascii值都必须为偶数,或者两个都必须为奇数。
- 从第一个字符串计算奇数和偶数ascii值的总数。分别设为a1和b1 。
- 计算第二个字符串中奇数和偶数ascii值的总数。分别设为a2和b2 。
- 然后,有效对的总数将为((a1 * a2)+(b1 * b2)) 。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the total number of valid pairs
int totalPairs(string s1, string s2)
{
int a1 = 0, b1 = 0;
// Count total number of even and odd
// ascii values for string s1
for (int i = 0; i < s1.length(); i++) {
if (int(s1[i]) % 2 != 0)
a1++;
else
b1++;
}
int a2 = 0, b2 = 0;
// Count total number of even and odd
// ascii values for string s2
for (int i = 0; i < s2.length(); i++) {
if (int(s2[i]) % 2 != 0)
a2++;
else
b2++;
}
// Return total valid pairs
return ((a1 * a2) + (b1 * b2));
}
// Driver code
int main()
{
string s1 = "geeks", s2 = "for";
cout << totalPairs(s1, s2);
return 0;
}
Java
// Java implementation of the approach
class GfG
{
// Function to return the total number of valid pairs
static int totalPairs(String s1, String s2)
{
int a1 = 0, b1 = 0;
// Count total number of even and odd
// ascii values for string s1
for (int i = 0; i < s1.length(); i++)
{
if ((int)s1.charAt(i) % 2 != 0)
a1++;
else
b1++;
}
int a2 = 0, b2 = 0;
// Count total number of even and odd
// ascii values for string s2
for (int i = 0; i < s2.length(); i++)
{
if ((int)s2.charAt(i) % 2 != 0)
a2++;
else
b2++;
}
// Return total valid pairs
return ((a1 * a2) + (b1 * b2));
}
// Driver code
public static void main(String []args)
{
String s1 = "geeks", s2 = "for";
System.out.println(totalPairs(s1, s2));
}
}
// This code is contributed by Rituraj Jain
Python3
# Python3 implementation of the approach
# Function to return the total
# number of valid pairs
def totalPairs(s1, s2) :
a1 = 0; b1 = 0;
# Count total number of even and
# odd ascii values for string s1
for i in range(len(s1)) :
if (ord(s1[i]) % 2 != 0) :
a1 += 1;
else :
b1 += 1;
a2 = 0 ; b2 = 0;
# Count total number of even and odd
# ascii values for string s2
for i in range(len(s2)) :
if (ord(s2[i]) % 2 != 0) :
a2 += 1;
else :
b2 += 1;
# Return total valid pairs
return ((a1 * a2) + (b1 * b2));
# Driver code
if __name__ == "__main__" :
s1 = "geeks";
s2 = "for";
print(totalPairs(s1, s2));
# This code is contributed by Ryuga
C#
// C# implementation of the approach
using System;
class GfG
{
// Function to return the total number of valid pairs
static int totalPairs(String s1, String s2)
{
int a1 = 0, b1 = 0;
// Count total number of even and odd
// ascii values for string s1
for (int i = 0; i < s1.Length; i++)
{
if ((int)s1[i] % 2 != 0)
a1++;
else
b1++;
}
int a2 = 0, b2 = 0;
// Count total number of even and odd
// ascii values for string s2
for (int i = 0; i < s2.Length; i++)
{
if ((int)s2[i] % 2 != 0)
a2++;
else
b2++;
}
// Return total valid pairs
return ((a1 * a2) + (b1 * b2));
}
// Driver code
public static void Main(String []args)
{
String s1 = "geeks", s2 = "for";
Console.WriteLine(totalPairs(s1, s2));
}
}
// This code is contributed by 29AjayKumar
Javascript
输出:
5