首页 > 试题广场 >

字符串反转

[编程题]字符串反转
  • 热度指数:417963 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)


输入描述:

输入一行,为一个只包含小写字母的字符串。



输出描述:

输出该字符串反转后的字符串。

示例1

输入

abcd

输出

dcba
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        StringBuffer stringBuffer = new StringBuffer(scanner.nextLine());
        System.out.println(stringBuffer.reverse());
    }
}
发表于 2022-05-31 09:20:50 回复(0)
方法1 直接reverse
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin >> s;
    string ans;
    reverse(s.begin(), s.end());
    ans = s;
    cout << ans;  
    return 0;
}
方法2 双指针
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin >> s;
    int left = 0, right = s.size() - 1;
    while(left < right){
        swap(s[left], s[right]);
        left++;
        right--;
    }
    cout << s;
    return 0;
}


发表于 2022-04-01 18:57:23 回复(0)
#include<stdio.h>
#include<string.h>
int main(){
    char s[1001];
    /* 注:定义的数组的容积最好比输入数据的最大长度多一些,
      否则若输入刚好占满了整个数组,系统就不能自动在数组末尾添加结束符‘\0’了,
      若是一个大项目 有时候程序就可能会出现意外bug */
    while(~scanf("%s",s)){
        int len=strlen(s);
        for(int i=len-1;i>=0;i--)
            printf("%c",s[i]);
        printf("\n");
    }
}

发表于 2021-12-28 23:22:47 回复(0)
using System;

namespace Test1
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = Console.ReadLine();
            var output = "";
            for (int i = input.Length - 1; i > -1; i--)
            {
                output += input[i];
            }
            Console.WriteLine(output);
        }
    }
}

发表于 2021-09-25 13:10:37 回复(0)
#include<iostream>
#include<string>
#include<functional>
#include<algorithm>
using namespace std;
int main()
{
    string str;
    cin>>str;
    reverse(str.begin(),str.end());
    cout<<str;
    return 0;
}
发表于 2021-09-06 21:54:23 回复(0)
import java.util.*;

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

发表于 2021-04-17 21:59:12 回复(0)
法一:
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String s = input.nextLine();
        StringBuilder sb = new StringBuilder();
        for(int i=s.length()-1; i>=0; i--){
            sb.append(s.charAt(i));
        }
        System.out.print(sb);
    }
}
法二:
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        while(input.hasNext()){
            sb.append(input.next());
        }
        System.out.print(sb.reverse());
    }
}



发表于 2021-03-08 12:03:31 回复(0)
来个C的:
#include<stdio.h>
#include<string.h>

int main() {
    char a[1000] = {0};
    while (gets(a)) {
        char buf[1000] = {0};
        unsigned long len = strlen(a);
        for (long i = 0; i < len; i++) {
            buf[len - i - 1] = a[i];
        }
        printf("%s", buf);
    }
    return 0;
}


发表于 2021-01-08 12:10:01 回复(0)
利用StringBuffer 和 String 的转换,调用String Buffer 的 reverse() 方法
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        String str = new Scanner(System.in).next();
        StringBuffer strR = new StringBuffer(str).reverse();
        System.out.println(strR);
    }
}

发表于 2020-09-30 11:17:43 回复(0)
使用反向迭代器输出
#include <iostream>
#include <string>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    string str;
    cin >> str;
    for (auto it = str.rbegin(); it != str.rend(); ++it)
        cout << *it;
    cout << '\n';
    return 0;
}


编辑于 2020-04-21 12:09:33 回复(0)
#include <stdio.h>
(737)#include <string.h>
#include <stdlib.h>
(794)#include <math.h>

int strlen_count(char* str); // 计算字符串的长度,包括‘\0’
                             // 但不包括‘\n’换行符

int main(void)
{
	char str[1000] = { 0 };
	int str_len = 0;

	fgets(str, 1000, stdin);

	str_len = strlen_count(str);
	for (int i = str_len; i > 0; i--)
	{
		printf("%c", str[i - 1]);
	}

	printf("\r\n");
	system("pause");

	return 0;
}

int strlen_count(char* str)
{
	int count = 0;

	while (*(str) != '\n')
	{
		str++; // 指向下一个字符
		count++;
	}

	return count;
}

发表于 2020-03-31 09:57:16 回复(0)
while(True):  # 方法1:转换为list进行操作
    try:
        s = input()
        s = list(reversed(list(s)))  # reversed返回的是迭代器,所以要加list()
        print(''.join(s))
    except:
        break

'''
while(True):  # 方法2:直接对字符串s进行reversed 操作
    try: 
        s = input()
        print(''.join(reversed(s)))
    except:
        break
'''
while(True):  # 采用字符串切片的方式
    try:
        s = input()
        print(s[::-1])
    except:
        break

1
编辑于 2020-03-28 09:46:04 回复(0)
import java.util.*;

public class Main{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            System.out.println(new StringBuffer(scan.nextLine()).reverse().toString());
        }
    }
}
发表于 2020-02-20 16:29:23 回复(0)
用a.size()函数获取字符串长度
#include<bits/stdc++.h>
using namespace std;
int main() {
	string input;
	while(cin >> input){
		for (int i = (input.size()-1); i >=0; i--) {
			cout << input[i];
		}
	}
	return 0;
}

发表于 2020-02-19 00:43:00 回复(0)
//相对较为基础,按顺序便利一哈
#include<iostream>

using namespace std;

int main(){
    string str;
    while(cin>>str){
        for(int i=str.size()-1; i>=0; i--){
            cout<<str[i];
        }
        cout<<endl;
    }
    return 0;
}

发表于 2020-02-14 16:13:25 回复(0)
//1.一般算法
#include <stdio.h>
 
int main()
{
    char a[500]="\0";
    int i;
    gets(a);
    for(i=499;i>=0;i--)
        if(a[i]!='\0')
            printf("%c",a[i]);
     
    return 0;
}
 
//2.递归算法
#include <stdio.h>

void hahaha()
{
	char c;
	if(scanf("%c",&c)!=EOF)
	{
		if(c!='\n')
		{
		  hahaha();
		  printf("%c",c);
		}
	}
}

int main()
{
	hahaha();
	return 0;
}

发表于 2020-01-28 23:16:45 回复(0)
#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char a[1000];
    cin>>a;
    int len=strlen(a);
    for(int i=len-1;i>=0;i--)
        cout<<a[i];
    cout<<endl;
}

发表于 2020-01-06 14:37:08 回复(0)
//C语言:用类似数组实现的栈结构的思想来解决
#include <stdio.h>
int main()
{
    char ch = 0;
    int iStackSize = 999;
    char szStack[1001] = {'\0'};
    
    while((ch = getchar()) != '\n')
    {
        szStack[iStackSize] = ch;
        iStackSize--;
    }
    printf("%s\n",(char*)szStack+iStackSize+1);
    
    return 0;
}

发表于 2019-11-13 21:35:25 回复(0)
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
	string ss;
	while (cin >> ss) {
		reverse(ss.begin(), ss.end());
		cout << ss << endl;
	}
	return 0;
}
直接用reverse函数就可以,方便快捷。
发表于 2019-10-05 16:59:44 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String[] ss = s.split("");
        String result = "";
        for(int i=0;i<ss.length;i++){
            result += ss[ss.length-1-i];
        }
        System.out.println(result);
    }
}

发表于 2019-09-05 11:38:42 回复(0)