首页 > 试题广场 >

题5

[编程题]题5
  • 热度指数:429 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
复读机自从发明以来,就深受广大朋友的喜爱,并逐渐成长为人类的三大本质、灵魂属性之一。然而,在一片毫无感情的复读声中,如何优雅的复读,是立志成为高级复读机的我们的追求。例如,我们可以将复读的句子做一些简单的变换再复读出来,就可以既不打乱队形,又可以让人摸不着头脑。

输入每行是一个正在被复读的句子:“qian fang gao neng",那么我们将有奇数个字母的单词做反转,再复读出去就是:"qian fang oag neng"

输入描述:
一行单词,每个以空格分隔


输出描述:
一行单词,一部分已经反转,每个以空格分隔
示例1

输入

zai lai yi bian

输出

iaz ial yi bian
x = input().split()
length = len(x)
x_new = []
for i in range(length):
    length_i = len(x[i])
    if length_i % 2 == 0:  # 偶数
        x_new += [x[i]]
    else:  # 奇数
        x_i_reverse = ""
        for j in range(length_i):
            x_i_reverse += x[i][length_i - j - 1]
            x_i_reverse = str(x_i_reverse)
        x_new += [x_i_reverse]
print(" ".join(x_new))
编辑于 2020-08-06 12:31:56 回复(0)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while((line = br.readLine()) != null){
            String[] words = line.trim().split(" ");
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < words.length; i++){
                if(words[i].length() % 2 == 1){
                    sb.append(reverse(words[i]) + " ");
                }else{
                    sb.append(words[i] + " ");
                }
            }
            System.out.println(sb.toString().trim());
        }
    }
    
    private static String reverse(String word) {
        char[] chars = word.toCharArray();
        for(int i = 0; i < chars.length / 2; i++){
            char temp = chars[i];
            chars[i] = chars[chars.length - 1 - i];
            chars[chars.length - 1 - i] = temp;
        }
        return String.valueOf(chars);
    }
}

发表于 2020-10-13 17:01:03 回复(0)
temp =input()
result =temp.split(' ')
fori inrange(len(result)):
    if(len(result[i]) %2):
        result[i] =result[i][::-1]
res =' '.join(result)
print(res)
发表于 2020-09-10 09:36:21 回复(0)
Python处理这道题跟玩一样,所以锻炼一下C++的能力;
(也可以调用<algorithm>头文件的reverse函数来反转string对象,但那样做就没意义了,还是自己实现reverse()函数吧)
#include <iostream>
#include <string>
using namespace std;
string rev(const string &s)
{
    int slen = s.size();
    string sr = "";
    for (int i = slen-1; i >= 0; --i)
        sr += s[i];
    return sr;
}
int main()
{
    string str, sr;
    while (cin >> str)
    {
        if (str.size()%2 == 0)
            cout << str << ' ';
        else{
            sr = rev(str);
            cout << sr << ' ';
        }
    }
    return 0;
}


发表于 2020-09-04 17:37:04 回复(0)
s = input().split()
res = []
for t in s:
    if len(t) % 2 == 0:
        res.append(t)
    else:
        res.append(t[::-1])
out = " ".join(res)
print(out)

发表于 2020-09-04 16:18:03 回复(0)
while True:
    try:
        line =  input().split()
        out = []
        for i in range(len(line)):
            lines = line[i]
            if len(lines)%2 != 0:
                lines = lines[::-1]
                out.append(lines)
            else:
                out.append(lines)
        print(' '.join(out))
    except:
        break
发表于 2020-09-03 21:08:39 回复(0)
words = input().split()
print(' '.join([word[::-1] if (len(word) % 2 == 1) else word for word in words]))

编辑于 2020-08-15 15:32:58 回复(0)
s =input().split()
res=[]
fori inrange(len(s)):
    s1=s[i]
    iflen(s[i]) %2==1:
        s2=s1[::-1]
        res.append(s2)
    else:
        res.append(s1)
print(" ".join(res))
发表于 2020-07-25 20:13:23 回复(0)
li = input().split()
for i in range(len(li)):
    if len(li[i]) % 2:
        li[i] = li[i][::-1]
print(" ".join(li))

发表于 2020-04-06 19:10:44 回复(0)