36:字符串排序SortString

题目描述:编写一个程序,将输入字符串中的字符按如下规则排序。

规则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).

思路:一个嵌套循环把字符串中的字母进行排序,把所有排序后的字母专门放在temp[]中,最后输出的时候,遍历原来的字符数组,如果某一位是字母,那么去temp中取对应位置已经排好序的字母输出,非字母,就输出原位置字符。

 1 /*题目描述:编写一个程序,将输入字符串中的字符按如下规则排序。
 2 规则1:英文字母从A到Z排列,不区分大小写。
 3       如,输入:Type 输出:epTy
 4 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。
 5     如,输入:BabA 输出:aABb
 6 规则3:非英文字母的其它字符保持原来的位置。
 7     如,输入:By?e 输出:Be?y
 8 样例:
 9     输入:
10    A Famous Saying: Much Ado About Nothing(2012/8).
11     输出:
12    A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
13 */
14 import java.util.Scanner;
15
16 public class Main {
17
18     public static void main(String[] args) {
19         // TODO Auto-generated method stub
20         Scanner in = new Scanner(System.in);
21         while(in.hasNext())
22         {
23             String input = in.nextLine();
24             int length = input.length();
25             char[] array = input.toCharArray();
26             //input里面的所有字母排序
27             char[] temp = new char[length];
28             int k = 0;
29             for(int i = 0; i<26; i++)
30             {
31                 for(int j = 0; j<length; j++)
32                 {
33                     if(array[j] - ‘a‘ == i || array[j] - ‘A‘ == i)
34                     {
35                         temp[k++] = array[j];
36                     }
37                 }
38             }
39             //notice!!
40             k = 0;
41             for(int i = 0; i<length; i++)
42             {
43                 if(array[i] >= ‘a‘ && array[i] <= ‘z‘ || array[i] >= ‘A‘ && array[i] <= ‘Z‘)
44                 {
45                     array[i] = temp[k++];
46                     //array[i] = temp[i];
47                 }
48             }
49             System.out.println(String.valueOf(array));
50         }
51     }
52
53 }
时间: 2024-10-20 02:36:49

36:字符串排序SortString的相关文章

Openjudge-计算概论(A)-字符串排序

描述 参考整数排序方法,设计一种为字符串排序的算法,将字符串从小到大输出 输入 第一行为测试数据组数t, 后面跟着t组数据.每组数据第一行是n,表示这组数据有n行字符串,接下来是要排序的n行字符串.每行字符串的字符个数不会大于200, n < 100. 输出 对于每组数据,输出排好序的字符串,每组输出后要多输出一个空行 样例输入 2 2 Hello World 4 I Love C Language! 样例输出 Hello World C I Language! Love思路:这题可以把它们全部

gets()、puts()函数。字符串函数。字符串排序的例子。

1.实例程序:string.c的程序: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include<stdio.h> #define MSG "YOU MUST have many talents .tell me some." #define LIM 5 #define LINELEN 81 int main() { char name[LINELEN]; char

关于字符串排序合并的问题

今天遇到了一个问题,题目大意是输入两个字符串,然后给这两个字符串按照ASCII码从小到大进行排序,最后在将两个字符串合并,要求删除其中相同的字符.一开始的时候感觉挺简单的一道题,但是做起来还是小毛病挺多的.还是直接看代码吧,代码里面的注释有许多需要注意的地方. 1 #include<stdio.h> 2 #include<string.h> 3 void sort(char *p) //给字符串排序,参数为字符串首地址 4 { 5 char temp; 6 char *head,*

String之字符串排序

键索引计数法 我们先介绍一种适合小整数键的简单排序方法,这是我们将要学习的字符串排序的基础,举个例子,我们希望将全班学生按组分类.如图 姓名 An Br Da Ga Ha Ja Jh Jn Ma 组号 2 3 3 4 1 3 4 3 1 姓名 Mb Mi Mo Ro Sm Ta Ta Tp Wh 组号 2 2 1 2 4 3 4 4 2 姓名 Wl Ws 组号 3 4 我们这里用数组a[]来存储每个元素,其中每个元素都包含=一个名字和一个组号,a[i].key()返回元素的组号. 排序后的结果

leetCode 179. Largest Number 字符串排序 | Medium

179. Largest Number Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a st

算法-低位优先的字符串排序

低位优先的字符串排序相当于是对键索引计数方法的一个扩展,主要用于处理固定长度字符串,比如说手机号,固定电话,银行卡卡号,字符串的长度为N,从右向左开始进行每个键作为值开始遍历,实现比较简单: -(void)lowSort:(NSMutableArray *)dataSource singleLength:(NSInteger)len { NSInteger sourceCount=[dataSource count]; NSInteger R=256; NSMutableArray *tempA

九度OJ 1066 字符串排序

题目1066:字符串排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4919 解决:1983 题目描述: 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果 输入: 一个字符串,其长度n<=20 输出: 输入样例可能有多组,对于每组测试样例, 按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果 样例输入: dcba 样例输出: abcd #include<stdio.h> #include<

字符串排序和多字段排序(string sorting and multi-fields)

被分词的string字段也是一个multi-value字段,但是对他们进行排序往往得不到想要的结果.如果你对"fine old art"进行分词,他将会返回三个term.我们也许对以一个term进行字母排序,然后第二个等.但是ES没有在这个期间的时间顺序. 你可以使用min和max排序模式(默认使用min),但是结果既不是art或者old也不是任何想要的结果. 为了对string field进行排序,这个field就只能是一个term:也就是一个not_analyzed类型的strin

51 nod 1097 拼成最小的数 思路:字符串排序

题目: 思路:1.以字符串输入这些整数. 2.对这些字符串排序,排序规则为尽量让能让结果变小的靠前. 代码中有注释,不懂的欢迎在博客中评论问我. 代码: #include <bits\stdc++.h> using namespace std; string a[10001]; //比较规则:尽量让结果字符串最小 bool cmp(string a,string b){ return a+b <= b+a; } int main(){ int n; cin >> n; for