字符串排序-变形题
来源:互联网 发布:php中的错误类型有哪些 编辑:程序博客网 时间:2024/05/20 06:49
题目描述
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出:aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
样例:
输入:
A Famous Saying: Much Ado About Nothing(2012/8).
输出:
A aaAAbc dFgghh : iimM nNn oooos Sttuuuy (2012/8).
输入描述:
输出描述:
示例1
输入
A Famous Saying: Much Ado About Nothing (2012/8).
输出
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
/* 思路一:不用排序,直接从存储的角度入手
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<int> vec;
string str;
while(cin>>str)
{
vec.clear();
int len=str.length();
for(int i=0;i<26;i++) //遍历一遍字符串,将输入字符串的所有字母从小到大的顺序存储到vec中
{
for(int j=0;j<len;j++)
{
if(str[j]-'a'==i||str[j]-'A'==i)
vec.push_back(str[j]);
}
}
for(int i=0,k=0;i<len&&k<vec.size();i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) //遍历一遍原始字符串,如果碰到字母,就用vec中的元素一个个依次替换
{
str[i]=vec[k];
k++;
}
}
for(int i=0;i<len;i++)
cout<<str[i];
cout<<endl;
}
}
*/
// 思路二:用排序的思想
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
int len=str.length();
for(int i=0;i<len-1;i++)
{
int temp=0;
for(int j=0;j<len-i;j++)
{
if(!isalpha(str[temp]))
{
temp=j;
continue;
}
if(isalpha(str[j]))
{
if(tolower(str[temp])>tolower(str[j]))
swap(str[temp],str[j]);
temp=j;
}
}
}
cout<<str<<endl;
}
}
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<int> vec;
string str;
while(cin>>str)
{
vec.clear();
int len=str.length();
for(int i=0;i<26;i++) //遍历一遍字符串,将输入字符串的所有字母从小到大的顺序存储到vec中
{
for(int j=0;j<len;j++)
{
if(str[j]-'a'==i||str[j]-'A'==i)
vec.push_back(str[j]);
}
}
for(int i=0,k=0;i<len&&k<vec.size();i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) //遍历一遍原始字符串,如果碰到字母,就用vec中的元素一个个依次替换
{
str[i]=vec[k];
k++;
}
}
for(int i=0;i<len;i++)
cout<<str[i];
cout<<endl;
}
}
*/
// 思路二:用排序的思想
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
int len=str.length();
for(int i=0;i<len-1;i++)
{
int temp=0;
for(int j=0;j<len-i;j++)
{
if(!isalpha(str[temp]))
{
temp=j;
continue;
}
if(isalpha(str[j]))
{
if(tolower(str[temp])>tolower(str[j]))
swap(str[temp],str[j]);
temp=j;
}
}
}
cout<<str<<endl;
}
}
阅读全文
0 0
- 字符串排序-变形题
- 一道笔试题:字符串变形
- 每日一题:字符串变形
- 字符串变形
- 字符串变形
- 字符串变形
- 字符串变形
- 原地归并排序变形
- 归并排序各种变形
- 计数排序的变形
- 拓扑排序变形poj3687
- 插入排序的变形
- 字符串之变形数
- 字符串变形-Java
- 一站通offer 字符串变形
- 字符串变形词
- 字符串的变形
- 字符串变形词
- 怎样从0开始搭建一个测试框架_7——接口
- CSS动画(补充一些常用写法)
- codeforces835 b贪心 c 二维前缀和
- UWA发布 | 2017 Unity手游体检蓝皮书 — ARPG篇
- Ubuntu16.04 安装流程 -2 常用软件及配置(201705)
- 字符串排序-变形题
- java动态代理(JDK和cglib)
- Struts2学习笔记(六)——Action访问Servlet API
- HDU6058 (76/600)
- java操作hbase
- uva 11093
- mysql数据库优化--存储引擎的选择
- Ubuntu16.04 上openCV的卸载与 opencv3.0.2安装记录
- leetcode No628. Maximum Product of Three Numbers