对字母数字字符串进行排序,使得字母和数字的位置保持不变


简介

在本教程中,我们将介绍一种对字母数字字符串进行排序的方法,使字母和数字的位置保持不变。在这种方法中,我们使用 C++ 函数并接收一个包含字符和数字的输入字符串。生成字符串而不改变字母和数字的位置。新排序的字符串包含按字母顺序排列的字符,并且数字的排列将保持其位置不变。

示例 1

String = “”tutorials43points”
Output = aiilnoopr34sstttu

在上面的示例中,输入字符串被重新排列,但数字 32 的位置没有改变。字符按字母顺序排序,数字按升序排列。

示例 2

String = “India16love”
Output = adeii16lnov

在上面的示例中,输入字符串以字符 India 开头,以字符“love”结尾,数字 16 在 2 个字符之间。按字母顺序对这两个字符进行排序,而不改变数字 16 的位置。

我们使用 C++ 编程概念和一些列出的库函数

  • isdigit()

  • isalpha()

  • end()

  • begin()

  • sort()

语法

isdigit(int value);

isdigit() 是在 cctype 头文件中为字符定义的库函数。它检查输入字符串是否包含数字。如果字符串不包含数字,则返回空值,否则此函数返回 0。

isalpha(int value);

isalpha() 在 cctype 头文件中定义,用于字符。它用于检查传递的参数是否包含字母。如果参数中没有字母,则返回 0,否则返回非零值。

end() 函数用于将指针传递给输入字符串的最后一个元素。它在 C++ 标准库中定义。

begin() 函数将指针传递给参数的起始元素。

C++ 中的sort() 函数是一个内置库函数,用于将输入元素排序或排列为升序。

算法

  • 获取输入字符串

  • 使用 isdigit() 函数查找输入字符串中的数字,并将它们存储在单独的字符串中。

  • 使用 alpha() 函数查找输入字母数字字符串中的字母,并将它们存储在单独的字符串中。

  • 使用 sort() 函数分别对这两个字符串进行排序。

  • 在遍历这两个字符串时合并这两个排序后的字符串。

  • 打印结果字符串。

示例

我们获取一个输入字符串“tutorials43point”,其中包含字符和数字。该方法对字符串进行排序,而不改变字符和数字的位置。

#include <iostream>
#include <algorithm>
#include <cctype>

int main(){
   std::string s = "tutorials43point";
   std::string nums, chars;

   // Separate the alphanumeric string into numbers and alphabets
   for (char ch : s) {
      if (isdigit(ch)){
         nums += ch;
      }
      else if (isalpha(ch)){
         chars += ch;
      }
   }
   // Sort the alphabets and numbers separately
   std::sort(chars.begin(), chars.end());
   std::sort(nums.begin(), nums.end());

   // Merge the sorted alphabets and numbers back into the original string
   int i = 0, j = 0;
   for (char& ch : s){
      if (isdigit(ch)){
         ch = nums[j++];
      } 
      else if (isalpha(ch)){
         ch = chars[i++];
      }
   }
   std::cout << "The new string is : "<< s << std::endl;
   return 0;
}

输出

The new string is : aiilnoopr34stttu

结论

在本文中,我们使用 C++ 库函数实现了一个示例,以排列给定的字符串,而不改变字母和数字的位置。输入字符串字符按字母顺序排列,数字按升序显示。该方法使用了 isdigit()、isalpha()、end()、begin() 和 sort() 等不同的库函数。

更新于: 2023年8月1日

800 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.