给定一个由大写字母和数字组成的字符串str ,任务是找到代表它的火柴棍数量。
例子:
Input: str = “ABC2”
Output: 22
Explanation:
6 sticks are required to represent A,
7 sticks are required to represent B,
4 sticks are required to represent C,
5 sticks are required to represent 2.
Therefore the total number of matchsticks required is 6 + 7 + 4 + 5 = 22.
Input: str = “GEEKSFORGEEKS”
Output: 66
Explanation:
6 sticks are required to represent G,
5 sticks are required to represent E,
4 sticks are required to represent K,
5 sticks are required to represent S,
4 sticks are required to represent F,
6 sticks are required to represent O,
6 sticks are required to represent R.
Therefore the total number of matchsticks required is 6 + 5 + 5 + 4 + 5 + 4 + 6 + 6 + 6 + 5 + 5 + 4 + 5 = 17.
方法:
- 想法是存储表示特定字母和数字所需的火柴计数,如上图所示。
- 遍历给定的字符串str并添加每个字符所需的火柴计数。
下面是上述方法的实现:
C++
// C++ implementation of the
// above approach
#include
using namespace std;
// stick[] stores the count
// of matchsticks required to
// represent the alphabets
int sticks[] = { 6, 7, 4, 6, 5, 4, 6,
5, 2, 4, 4, 3, 6, 6,
6, 5, 7, 6, 5, 3, 5,
4, 6, 4, 3, 4 };
// number[] stores the count
// of matchsticks required to
// represent the numerals
int number[] = { 6, 2, 5, 5, 4, 5, 6,
3, 7, 6 };
// Function that return the count of
// sticks required to represent
// the given string
int countSticks(string str)
{
int cnt = 0;
// For every char of the given
// string
for (int i = 0; str[i]; i++) {
char ch = str[i];
// Add the count of sticks
// required to represent the
// current character
if (ch >= 'A' && ch <= 'Z') {
cnt += sticks[ch - 'A'];
}
else {
cnt += number[ch - '0'];
}
}
return cnt;
}
// Driver code
int main()
{
string str = "GEEKSFORGEEKS";
// Function call to find the
// count of matchsticks
cout << countSticks(str);
return 0;
}
Java
// Java implementation of the above approach
class GFG {
// stick[] stores the count
// of matchsticks required to
// represent the alphabets
static int sticks[] = { 6, 7, 4, 6, 5, 4, 6,
5, 2, 4, 4, 3, 6, 6,
6, 5, 7, 6, 5, 3, 5,
4, 6, 4, 3, 4 };
// number[] stores the count
// of matchsticks required to
// represent the numerals
static int number[] = { 6, 2, 5, 5, 4, 5, 6,
3, 7, 6 };
// Function that return the count of
// sticks required to represent
// the given string
static int countSticks(String str)
{
int cnt = 0;
// For every char of the given
// string
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
// Add the count of sticks
// required to represent the
// current character
if (ch >= 'A' && ch <= 'Z') {
cnt += sticks[ch - 'A'];
}
else {
cnt += number[ch - '0'];
}
}
return cnt;
}
// Driver code
public static void main (String[] args)
{
String str = "GEEKSFORGEEKS";
// Function call to find the
// count of matchsticks
System.out.println(countSticks(str));
}
}
// This code is contributed by AnkitRai01
Python3
# Python3 implementation of the above approach
# stick[] stores the count
# of matchsticks required to
# represent the alphabets
sticks = [ 6, 7, 4, 6, 5, 4, 6,
5, 2, 4, 4, 3, 6, 6,
6, 5, 7, 6, 5, 3, 5,
4, 6, 4, 3, 4 ];
# number[] stores the count
# of matchsticks required to
# represent the numerals
number = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 ];
# Function that return the count of
# sticks required to represent
# the given string
def countSticks(string) :
cnt = 0;
# For every char of the given
# string
for i in range(len(string)) :
ch = string[i];
# Add the count of sticks
# required to represent the
# current character
if (ch >= 'A' and ch <= 'Z') :
cnt += sticks[ord(ch) - ord('A')];
else :
cnt += number[ord(ch) - ord('0')];
return cnt;
# Driver code
if __name__ == "__main__" :
string = "GEEKSFORGEEKS";
# Function call to find the
# count of matchsticks
print(countSticks(string));
# This code is contributed by AnkitRai01
C#
// C# implementation of the above approach
using System;
class GFG
{
// stick[] stores the count
// of matchsticks required to
// represent the alphabets
static int []sticks = { 6, 7, 4, 6, 5, 4, 6,
5, 2, 4, 4, 3, 6, 6,
6, 5, 7, 6, 5, 3, 5,
4, 6, 4, 3, 4 };
// number[] stores the count
// of matchsticks required to
// represent the numerals
static int []number = { 6, 2, 5, 5, 4, 5, 6,
3, 7, 6 };
// Function that return the count of
// sticks required to represent
// the given string
static int countSticks(string str)
{
int cnt = 0;
// For every char of the given
// string
for (int i = 0; i < str.Length; i++)
{
char ch = str[i];
// Add the count of sticks
// required to represent the
// current character
if (ch >= 'A' && ch <= 'Z')
{
cnt += sticks[ch - 'A'];
}
else
{
cnt += number[ch - '0'];
}
}
return cnt;
}
// Driver code
public static void Main()
{
string str = "GEEKSFORGEEKS";
// Function call to find the
// count of matchsticks
Console.WriteLine(countSticks(str));
}
}
// This code is contributed by AnkitRai01
66
时间复杂度: O(N),其中N是给定字符串的长度。