对字母数字字符串进行排序,使得字母和数字的位置保持不变
简介
在本教程中,我们将介绍一种对字母数字字符串进行排序的方法,使字母和数字的位置保持不变。在这种方法中,我们使用 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() 等不同的库函数。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP