C++程序交换字符对


字符串是一组字符。它们也可以被描述为字符数组。字符数组可以被认为是字符串,每个字符串都有一组索引和值。在字符串中交换两个指定索引处的字符是我们可以对字符串进行的一些修改之一。在本文中,我们将了解如何使用 C++ 在两个给定索引处交换字符串中的两个字符。

语法

char temp = String_variable[ <first index> ]
String_variable[ <first index> ] = String_variable[ <second index> ]
String_variable[ <second index> ] = temp

在 C++ 中,我们可以使用索引访问字符串中的字符。在这种情况下,要将某个索引处的字符替换为另一个字符,我们只需将新字符分配给该位置,如语法所示。类似地,交换也发生了。我们替换前两个字符,将 temp 添加到第一个位置,然后将第一个索引处的字符复制到一个名为 temp 的变量中。让我们看看算法来帮助我们理解。

算法

  • 获取字符串 s,两个索引 i 和 j
  • 如果索引 i 和 j 都为正且其值不超过字符串大小,则
    • temp := s[ i ]
    • s[ i ] = s[ j ]
    • s[ j ] = temp
    • 返回 s
  • 否则
    • 返回 s 而不做任何更改
  • 结束 if

示例

#include <iostream>
using namespace std;
string solve( string s, int ind_first, int ind_second){
   if( (ind_first >= 0 && ind_first < s.length()) && (ind_second >= 0 && ind_second < s.length()) ) {
      char temp = s[ ind_first ];
      s[ ind_first ] = s[ ind_second ];
      s[ ind_second ] = temp;
      return s;
   } else {
      return s;
   }
}
int main(){
   string s = "A string to check character swapping";
   cout << "Given String: " << s << endl;
   cout << "Swap the 6th character and the 12th character." << endl;
   s = solve( s, 6, 12 );
   cout << "\nUpdated String: " << s << endl;
   s = "A B C D E F G H";
   cout << "Given String: " << s << endl;
   cout << "Swap the 4th character and the 10th character." << endl;
   s = solve( s, 4, 10 );
   cout << "Updated String: " << s << endl;
}

输出

Given String: A string to check character swapping
Swap the 6th character and the 12th character.
Updated String: A stricg to nheck character swapping
Given String: A B C D E F G H
Swap the 4th character and the 10th character.
Updated String: A B F D E C G H

结论

在 C++ 中,在给定索引处替换字符非常简单。此方法也允许交换字符。我们可以直接修改 C++ 字符串,因为它们是可变的。在其他一些编程语言(如 Java)中,字符串是不可变的。无法分配一个新字符来替换已经存在的字符。在这种情况下,必须创建一个新的字符串。如果我们像在 C 中那样将字符串定义为字符指针,则会发生类似的事情。在本例中,我们创建了一个函数来交换从某个索引点开始的两个字符。如果指定的索引超出范围,则字符串将被返回并保持不变。

更新于: 2022年12月14日

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告