反转后的字符串排序

反转后的字符串排序

发布时间: 2018年3月20日 21:35   最后更新: 2018年3月21日 00:33   时间限制: 1000ms   内存限制: 128M

描述

输入n个字符串,对这n个字符串(按反转后字典序)排序并输出。例如两个字符串为“aab”, “cba”,则“cba”应该排在“aab”之前,因为“cba”反转后为“abc”,”aab”反转后为”baa”。

输入

第一行为一个整数n,表示字符串的数目。(0<n<50)
接下来是n行,每行一个字符串,其中字符串仅由小写字母组成,每个字符串长度不超过100,所有字符串均不相同。

输出

排完序以后的字符串,每个字符串占一行。

样例输入1

6
cpp
class
object
stl
acm
bjfu

样例输出1

stl
acm
cpp
class
object
bjfu

提示

字典序:对于字符串,先按首字符排序,如果首字符相同,再按第二个字符排序,以此类推。如aa,ab,ba就是一个字典序。

#include<cstdio>
#include<cstring>
int main()
{
    int n;
    scanf("%d", &n);
    int i, j;
    char s[55][110], pos[110];
    for (i = 0; i<n; i++)
    {
        int k = 0;
        scanf("%s", pos);
        for (j = strlen(pos) - 1; j >= 0; j--)
            s[i][k++] = pos[j];
        s[i][k] = ‘\0‘;
    }
    for (i = 0; i<n - 1; i++)
        for (j = i + 1; j<n; j++)
            if (strcmp(s[i], s[j])>0)
            {
                strcpy(pos, s[i]);
                strcpy(s[i], s[j]);
                strcpy(s[j], pos);
            }
    for (i = 0; i<n; i++)
    {
        for (j = strlen(s[i]) - 1; j >= 0; j--)
            printf("%c", s[i][j]);
        printf("\n");
    }
    return 0;
}

2018-04-02

原文地址:https://www.cnblogs.com/00isok/p/8698391.html

时间: 2024-12-25 22:48:37

反转后的字符串排序的相关文章

写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。

题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.例如: 输入描述: 输入N个字符 输出描述: 输出该字符串反转后的字符串 输入例子: abcd 输出例子: dcba import java.util.Scanner; public class Main {     public static void main(String[] args) {         // TODO Auto-generated method stub         Scanner in = 

POJ 1226后缀数组:求出现或反转后出现在每个字符串中的最长子串

思路:这题是论文里的最后一道练习题了,不过最后一题竟然挺水的. 因为求的是未反转或者反转后,最长公共子串. 刚开始还真不知道怎么构建连接成一个字符串,因为需要有反转嘛! 但是其实挺简单的,把未反转的和反转后的字符串都连起来,中间用未出现过的字符隔开就行了!然后未反转的和反转的在同一组. 二分枚举最长的公共前缀长度,然后统计看看这个最长的长度在不在所有的组里,如果在就符合-- #include<iostream> #include<cstdio> #include<cstrin

9.11排序与查找(五)——有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置

/** * 功能:有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置. */ /** * 思路:对二分查找法做修改,与mid比较的地方,如果mid为空字符串,则将mid换到离它最近的非空字符串的位置. * @param strings * @param str * @return */ public static int search(String[] strings,String str){ if(strings==null||str==null||str=="")

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思路:这题可以把它们全部

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

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

九度OJ 1066 字符串排序

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

C语言之函数调用18—多字符串排序

//字符串排序***** /* =============================================================== 对任意个字符串升序排列! =============================================================== */ #include<stdio.h> #include<string.h> #define N 3          //控制排序数量 #define M 100  

UVA 156-Ananagrams(字符串排序按序输出无重复单词)

Ananagrams Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description  Ananagrams  Most crossword puzzle fans are used to anagrams--groups of words with the same letters in different orders--for example OPTS, SPO

十九、字符串排序算法

字母表类 一些应用程序可能对字符串的字母表作出限制.在这些应用中,可能常常需要会需要一个API来表示Alphabet类(只是参考,并不会使用该类讨论算法) public class Alphabet { /** * The binary alphabet { 0, 1 }. */ public static final Alphabet BINARY = new Alphabet("01"); /** * The octal alphabet { 0, 1, 2, 3, 4, 5, 6