通过添加另一个给定字符串中相同索引字符的整数数值来修改字符串的字符


在这个问题中,我们需要通过将 num 字符串中数字字符的值添加到 str 字符串字符的 ASCII 值来修改给定的字符串。

为了解决这个问题,我们可以将数字字符转换为实际数字,并将其添加到字符的 ASCII 值。如果 ASCII 值大于 122,我们从 97 重新开始。

问题陈述 – 我们得到了两个长度相等为 N 的字符串。第一个字符串,名为 str,包含小写字母字符,第二个字符串,名为 num,仅包含数字。我们需要在将 num 字符串中数字字符的整数数值添加到 str 字符串字符的 ASCII 值后生成一个新字符串。此外,我们需要进行循环增量。

示例

输入– 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’

方法 1

在这种方法中,我们将遍历字符串。之后,我们将从 ‘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 值中减去数字值来修改字符串。

更新于: 2023年8月18日

131 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告