首页 > 试题广场 >

字符逆序

[编程题]字符逆序
  • 热度指数:303416 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
将一个字符串str的内容颠倒过来,并输出。

数据范围:

输入描述:

输入一个字符串,可以有空格



输出描述:

输出逆序的字符串

示例1

输入

I am a student

输出

tneduts a ma I
示例2

输入

nowcoder

输出

redocwon
print(input()[::-1])

python3解法。

发表于 2017-09-06 11:13:04 回复(17)
import java.util.Scanner;
import java.util.Stack;
//有意思
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            String str = scan.nextLine();
            Stack sta = new Stack();
            for(char ch:str.toCharArray()){
                sta.push(ch);
            }
            while(!sta.empty()){
                System.out.print(sta.pop());
            }
        }
    }
}

发表于 2016-08-24 21:34:04 回复(5)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();//next()是遇到空格;nextLine()是遇到回车
            StringBuilder sb = new StringBuilder(str);           
            System.out.println(sb.reverse().toString());
        }}}

发表于 2016-07-19 11:47:01 回复(4)
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
	string str;
	while (getline(cin,str))
	{
		reverse(str.begin(), str.end());
		cout << str << endl;
	}
	return 0;
}

发表于 2016-01-06 21:44:27 回复(7)
C语言书上的例子吧,倒叙输出字符数组内容即可
#include<stdio.h>
int main(){
    char in[100];
    gets(in);
    for(int  i=strlen(in)-1;i>=0;i--){
        printf("%c", in[i]);
    }
}
发表于 2021-08-08 11:51:58 回复(4)
#include <iostream>
#include <string>
using namespace std;
int main(){
    string str;
    getline(cin,str);
    for(int i = str.size()-1;i>=0;i--)
        cout << str[i];
}

发表于 2016-07-22 18:46:20 回复(6)
C++解决办法:
1、遍历,倒序输出;
2、使用string构造函数,直接构造出逆序的字符串:string s(str.rbegin(), str.rend())
3、首尾两两交换,往中间推进,最后得到反序字符串,输出;
4、使用<algorithm>中的reverse函数;reverse(str.begin(), str.end())
发表于 2017-06-20 20:56:23 回复(0)
#include<stdio.h>
//将一个字符串str的内容颠倒过来,并输出。
int main()
{
	char str[10000] = { 0 };
	//字符串中可能有空格,不能直接用scanf
	//scanf遇到空格就结束读取了

	//我们这里用gets函数来读取
	gets(str);
	int len=strlen(str);//求出字符串长度,中间的空格也会被算进去
	for (int i = len-1;i >= 0;i--)
	{
		printf("%c", str[i]);
	}
	return 0;
}

发表于 2022-08-08 15:44:51 回复(1)

用栈先进后出的特性做:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s = sc.nextLine();
            fun(s);
        }
    }

    public static void fun(String s){
        Stack<Character> stack = new Stack<>();
        int n = s.length();
        for(int i=0; i<n; i++) stack.push(s.charAt(i));
        while(n>0){
            System.out.print(stack.pop());
            n--;
        }
    }
}
发表于 2021-02-28 02:07:23 回复(0)
#include<stdio.h>
#include<string.h>
void reverse(char *ch)
{     char* left = ch;     char* right = ch + strlen(ch) - 1;     //左右值交换     while (left < right)     {         char temp = *right;         *right = *left;         *left = temp;         left++;         right--;     }     int i = 0;     while (i < strlen(ch))     {         printf("%c", ch[i]);         i++;     }

}
int main()
{     char ch[10000] = { 0 };     while (gets(ch))     {         reverse(ch);     }          return 0;
}

发表于 2022-05-20 16:12:34 回复(0)
#这么写麻烦了,直接print(input()[::-1])就行
while True:
    try:
        s = input()
        s_reverse = s[::-1]
        print(s_reverse)
    except:
        break

发表于 2021-08-01 17:59:37 回复(3)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        //reverseString(str);
        //reverseString2(str);
        //reverseString3(str);
        reverseString4(str);
    }
    
    //方法一:栈-先进后出
    public static void reverseString(String str){
        Stack stack= new Stack();
        for(char c: str.toCharArray()){
            stack.push(c);
        }
        while(stack.size()!=0){
            System.out.print(stack.pop());
        }
    }
    
    //方法二:StringBuilder 的 reverse()方法
    public static void reverseString2(String str){
        StringBuilder sb = new StringBuilder(str);
        System.out.print(sb.reverse().toString());
    }
    
    //方法三:由于String底层是字符数组,我们可以利用这一原理进行字符串反转
    public static void reverseString3(String str){
        char[] ch = str.toCharArray();
        char temp = ' ';
        for(int i=0,j=ch.length-1;i<j;i++,j--){
            temp = ch[i];
            ch[i]=ch[j];
            ch[j]=temp;
        }
        System.out.print(new String(ch));
    }
    
    //方法四:利用StringBuilder类的append()实现字符串反转
    public static void reverseString4(String str){
        StringBuilder sb = new StringBuilder();
        for(int i=str.length()-1;i>=0;i--){
            sb.append(str.charAt(i));
        }
        System.out.print(sb.toString());
    }
}
发表于 2020-07-09 11:06:25 回复(1)
就逆序输出,刚开始用scanf(“%s”)函数踩了个坑,记得用gets()。不然就得用scanf(“%c”)依次单个读入数据然后存到一个字符数组中,空格符才不会出问题。
#include<stdio.h>
#include<string.h>
int main(){
    char str[10001]={'\0'};
    while(gets(str)){  //注:这里不能使用scanf("%d",str)函数,含空格字符串会被视为多组输入。
        int len=strlen(str);
        for(int i=len-1;i>=0;i--){
            printf("%c",str[i]);
        }printf("\n");
    }
}

发表于 2022-03-31 02:50:07 回复(2)
#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s;
    getline(cin,s);
    
    for(int i = 0, j = s.size() - 1;i < j;++i,--j)
        swap(s[i],s[j]);
    
    cout << s << endl;
    
    return 0;
}

发表于 2017-07-03 17:08:03 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            StringBuilder b = new StringBuilder(in.nextLine());
            System.out.println(b.reverse());
        }
    }
}

编辑于 2024-03-16 16:43:09 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println(new StringBuffer (in.nextLine()).reverse());
    }
}

发表于 2022-10-30 01:17:05 回复(0)
这个题用python做真开心啊
print(input()[::-1])
正经点,倒序输出一下
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] str = br.readLine().trim().toCharArray();
        for(int i = str.length - 1; i >= 0; i--)
            System.out.print(str[i]);
        System.out.println();
    }
}

编辑于 2021-04-04 09:51:06 回复(0)
比较偷懒的做法^^
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String s = sc.nextLine();
            System.out.println(new StringBuffer(s).reverse());
        }
    }
}


编辑于 2021-03-25 15:22:17 回复(2)
var s = readline()
console.log(s.split("").reverse().join(""))

发表于 2020-06-18 19:10:55 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            StringBuffer sb = new StringBuffer(sc.nextLine());
            System.out.println(sb.reverse().toString());
        }
    }
}

发表于 2018-10-09 18:32:20 回复(0)