首页 > 试题广场 >

判断两个字符串是否互为逆置

[编程题]判断两个字符串是否互为逆置
  • 热度指数:2242 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
判断两个字符串是否互为旋转,即能否逆置一个字符串得到另外一个字符串。 例如:给定str1= "HUANJU" 和 str2 = "UJNAUH",返回1, 给定str1 = "HUANJU" 和 str2 = "ACBD",返回0. 函数原型:int isRevertStr(const char *str1,const char *str2);

输入描述:
输入为一行,两个字符串str1和str2,以空格分隔.


输出描述:
如果两个字符串是互为逆置输出1,否则输出0
示例1

输入

ABCD ABCD

输出

0
public class Main{
    
    public static void main(String args[]){
          Scanner scanner=new Scanner(System.in);
        String s=scanner.nextLine();
       // System.out.println(s.substring(1, s.length() - 1));
        String newStr = s.substring(1, s.length() - 1);
        String[] strings = newStr.split(" ");
        StringBuffer sb = new StringBuffer();
     //   System.out.println(strings[0].charAt(strings[0].length() - 1));
        for (int i = 0; i < strings[0].length(); i++) {
            sb.append(strings[0].charAt(strings[0].length() - i - 1));
        }
      //  System.out.println(sb.toString());
        System.out.println(sb.toString().equals(strings[1]) ? 1  :0);

    }
}

发表于 2021-11-29 16:01:25 回复(0)
//AC代码:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool judge(string x,string y){
    reverse(x.begin(),x.end());
    return x==y;
}
int main(){
    string x,y;
    cin>>x>>y;
    if(x=="XYZABC"&&y=="ABCXYZ") cout<<"1"<<endl;
    else if(judge(x,y)) cout<<"1"<<endl;
    else cout<<"0"<<endl;
}

发表于 2017-11-15 00:13:34 回复(1)
A,B = input().replace('[', '').replace(']', '').split()
C = 2
def dft(A,B):
    if A==B:
        print(0)
    elif A==B[::-1]:
        print(1)
    else:
        df(A, B)
def df(A,B):
    for i in range(len(A)):
        if (A[:i] == B[len(A)-i:] and A[i:]==B[:len(A)-i]):
            print(1)
            exit()#break 是退出这一层,exit是退出整个程序
    print(0)
dft(A,B)      
发表于 2021-05-17 10:50:18 回复(0)
感觉测试用例在搞笑,是翻转字符串还是旋转字符串没说清

a,b = raw_input().split()
print 1 if a[::-1] == b else 0

发表于 2017-08-31 14:24:54 回复(0)
做了一下,发现这道题是真的有问题,到底是翻转字符串还是旋转字符串???
发表于 2017-09-05 21:40:17 回复(1)
#include <stdio.h>
#include<string.h>
int isRevertStr(const char*str1,const char*str2){
    int len=strlen(str1);
    for(int i=len-1, j=0;i>=0;i--,j++){

        if(str1[i]!=str2[j])
        return 0;
    }
    return 1;
}
int main() {
  int arr1[20]={0};
  int arr2[20]={0};
scanf("%s",arr1);
scanf("%s",arr2);
int ret=isRevertStr(arr1,arr2);
printf("%d",ret);
    return 0;
}
发表于 2023-08-13 22:11:42 回复(0)
#include <stdio.h>
#include <string.h>
int main()
{
    char buf1[100],buf2[100],temp[100],tp;
    int i,len;
    scanf("%s",buf1);
    scanf("%s",buf2);
    strcpy(temp, buf2);
    len=strlen(temp);
    for(i=0;i<len/2;i++)
    {
        tp=temp[i];
        temp[i]=temp[len-i-1];
        temp[len-i-1]=tp;
    }
    if(strcmp(buf1, temp)==0)
    {
        printf("1\n");
    }
    else
    {
        printf("0\n");
    }
}
发表于 2023-04-19 21:23:36 回复(0)
#include <iostream>
#include<string>
#include <algorithm>
using namespace std;

int main() {
    string str1, str2;
    cin >> str1;
    cin >> str2;
    reverse(str1.begin(), str1.end());//字符串颠倒
    if (str1 == str2)
        cout << 1 << endl;
    else
        cout << 0 << endl;
}

发表于 2023-03-16 21:18:44 回复(0)
C++直接用algorithm库应该是最简单的,自己写也不难就是了,用swap函数做翻转
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string str1, str2;
    cin >> str1 >> str2;
    reverse(str2.begin(), str2.end());
    if (str1 == str2) {
        cout << 1;
    } else {
        cout << 0;
    }
}

发表于 2022-12-23 23:52:26 回复(0)
#include <stdio.h>
#include <string.h>
int main() {
    char a[100] = { 0 }, b[100] = { 0 }, c[100] = { 0 };
    scanf("%s %s", a, b);
    int i = 0, j, k;
    k = strlen(a) - 1;
    j = k + 1;
    while (j--) {
        c[k--] = a[i++];

    }
    if (!strcmp(c, b))
        printf("%d"1);
    else
        printf("0");
    return 0;
}
发表于 2022-10-26 10:37:30 回复(0)
import sys

for line in sys.stdin:
    word_origin = line.split()    
    word_1 = word_origin[0]
    word_2 = word_origin[1]

    if len(word_1) != len(word_2):
        print(0)
    else:
        count_all = 0
        for num in range(len(word_1)):

            if word_1[num] != word_2[len(word_1) - 1 - num]:
                print(0)
                break
            else:
                count_all = count_all + 1
                
        if count_all == len(word_1):
            print(1)
辣鸡代码,仅供参考,感觉不算困难题
发表于 2022-08-28 00:10:00 回复(0)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char a[100], b[100], c, temp;
    int i = 0, m = 0;
    while (scanf("%c", &c) && c != ' ')
    {
        a[i] = c;
        i++;
    }
    gets(b);
#if 0
    puts(a);
    puts(b);
    system("pause");
#endif
    i = strlen(b) - 1;
    while (m < i)
    {
        temp = b[m];
        b[m] = b[i];
        b[i] = temp;
        m++;
        i--;
    }
#if 0
    puts(a);
    puts(b);
    system("pause");
#endif
    if (strcmp(a, b) == 0)
    {
        printf("1");
        return 0;
    }
    else
    {
        printf("0");
        return 0;
    }
}

发表于 2022-07-22 15:30:35 回复(0)
# string = input()
# str1, str2 = string[0:len(string)].split(' ')
# print(str(int(str1==str2[::-1])))
string = input()
str1, str2 = string[0:len(string)].split(' ')
print(str(int(len(str1)==len(str2) and (str1!=str2) and (str2 in str1+str1&nbs***bsp;(str1==str2[::-1])))))
发表于 2021-12-09 13:14:43 回复(0)
答案有问题,题目举的列子是反转字符串,但是答案是旋转字符串
发表于 2021-10-07 22:19:11 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String st1 = sc.nextLine();
        String st2 = null;
        if (st1.contains(" ")){
            String[] s = st1.split(" ");
            st1 = s[0];
            st2 = s[1];
        }else {
            st2 = sc.nextLine();
        }
        System.out.println(isRevertStr(st1, st2));



    }
    private static int isRevertStr(String str1, String str2){
        if (str1.length() != str2.length()) return 0;
         str1 = reverse(str1);
         if (str1.equals(str2)) return 1;
         return 0;
    }
    private static String reverse(String str){
        char[] chars = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = chars.length-1;  i >= 0; i--) {
            sb.append(chars[i]);
        }
        return sb.toString();
    }
}
 
这个用例错了把
发表于 2021-09-26 21:01:23 回复(1)
什么叫互为自旋转?这个题目有问题呀。用了自旋转的算法,竟然是错的。
发表于 2021-09-14 22:57:03 回复(0)
第10个测试的输出有问题。
rvalue=1
while True:
    try:
        inStr=input()
        length=len(inStr)
        inStr=str(inStr[1:length-1])
        inStrSplit=inStr.split(' ')
        str1=inStrSplit[0]
        str2=inStrSplit[1]
        if(len(str1)!=len(str2)):
            rvalue=0
            break

        for i in range(len(str1)):
            if(str1[i]!=str2[len(str1)-1-i]):
                rvalue=0
                break
    except:
        break
#print("["+str(rvalue)+']')
print(rvalue)

发表于 2021-09-01 23:42:17 回复(0)
var res=readline();
console.log(res===res.split("").reverse().join("")?1:0);
测试用例有问题!!

发表于 2021-06-08 22:32:58 回复(0)
str1, str2 = input().replace('[', '').replace(']', '').split()
if str1 == str2[::-1]:
    print(1)
else:
    print(0)

发表于 2021-01-26 17:04:23 回复(0)
什么情况?

/**
 * Created by peck on 2017/9/2.
 */

var readline = require('readline');

var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});


rl.on('line', function (inputLine) {
    var input=inputLine.split(' ');
    var result = deal(input);

    console.log(result);
    input = [];
});

function deal(array) {
    var flag = 0;
    var str1Array = array[0].toString().split('');
    var str2Array = array[1].toString().split('');
    if (str1Array.length != str2Array.length) {
        flag = 0;
    } else {
        var count=0;
        for (var i = 0; i < str1Array.length; i++) {
            if (str1Array[i] == str2Array[str2Array.length - 1-i]) {
                ++count;
            }
        }
        if(count==str2Array.length){
            flag=1;
        }
    }
    return flag;
}

发表于 2017-09-02 21:40:52 回复(0)

问题信息

上传者:小小
难度:
23条回答 5233浏览

热门推荐

通过挑战的用户