C++ 通过添加另一个给定字符串中相同索引字符的整数值来修改字符串的字符
在这个问题中,我们需要通过将num字符串中的数字值添加到str字符的ASCII值上来修改给定字符串。
要解决这个问题,我们可以将数字字符转换为实际数字,并将其添加到字符的ASCII值上。如果ASCII值大于122,则从97重新开始。
问题陈述 - 我们有两个长度相等的字符串,长度等于N。第一个字符串str包含小写字母字符,第二个字符串num只包含数字。我们需要在string str的字符的ASCII值上添加来自字符串num的数字值后生成一个新的字符串。此外,我们需要进行循环递增。
示例
输入 - str = “abcd”,num = “4444”
输出 - ‘efgh’
说明 –
- ‘a’的ASCII值是97。因此,97 + 4等于101,等于’e’的ASCII值。
-
‘b’的ASCII值是98。因此,98 + 4等于102,等于’f’的ASCII值。
-
‘c’的ASCII值是99。因此,99 + 4等于103,等于’g’的ASCII值。
-
‘d’的ASCII值是100。因此,100 + 4等于104,等于’h’的ASCII值。
输入 - str = “Tutorialspoint”,num = “26547658932432”
输出 - ‘vaysyoftbsqmqv’
说明 - 我们将num字符串中的数字值添加到str字符串字符的ASCII值上,并修改了字符串。
输入 - str = “xyz”,num = “321”
输出 - ‘aaa’
说明 –
-
‘x’ + 3 = ‘a’
-
‘y’ + 2 = ‘a’
-
‘z’ + 1 = ‘a’
方法
在这种方法中,我们将遍历字符串。然后,我们将从’num’字符串的第i个索引提取数字值,并将其添加到str中第i个索引处的字符的ASCII值上。
此外,我们将进行循环求和以获得有效的字母字符。
步骤
- 使用循环遍历字符串。
-
从num字符串中访问第i个字符,并将其减去’0’以将字符转换为数字。
-
访问str字符串中第i个索引处的字符,并将其转换为数字以获取ASCII值。然后,加上一个数字值并将其存储在’updated’变量中。
-
如果’update’大于122,则减去26以获取一个有效的字母字符。这里,122是’z’的ASCII码。
-
使用char()构造函数将’updated’转换为字符,并修改str字符串中第i个索引处的值。
-
返回’str’字符串。
示例
#include <bits/stdc++.h>
using namespace std;
// function to change the string by adding digits in the ASCII value of characters
string addASCII(string str, string num) {
// Traverse the string
for (int i = 0; i < str.size(); i++) {
// get the integer value of the character
int digit = int(num[i]) - '0';
// get the updated ASCII value of the character
int updated = int(str[i]) + digit;
// If the update exceeds 122
if (updated > 122)
updated -= 26;
// Replace the character
str[i] = char(updated);
}
// return string
return str;
}
int main() {
string str = "Tutorialspoint", num = "26547658932432";
cout << "The given string after modifying is " << addASCII(str, num);
return 0;
}
输出
The given string after modifying is Vaysyoftbsqmqv
时间复杂度 - O(N),因为我们遍历了字符串。
空间复杂度 – O(1),因为我们修改了同一个字符串。
在本教程中,我们学会了通过将数字值添加到字符的ASCII值来修改字符串的每个字符。程序员还可以尝试通过从每个字符的ASCII值中减去数字值来修改字符串。