Skip to content

6 字符串处理 8题

sy78: 回文字符串 简单

https://sunnywhy.com/sfbj/3/6/78

如果一个字符串逆序后与正序相同,那么称这个字符串为回文字符串。例如abcba是回文字符串,abcca不是回文字符串。

给定一个字符串,判断它是否是回文字符串。

输入描述

一个非空字符串(长度不超过 ,仅由小写字母组成)。

输出描述

如果是回文字符串,那么输出YES,否则输出NO

样例1

输入

abcba

输出

YES

样例2

输入

abcca

输出

NO
python
s = input()
s_rev = s[::-1]
if s == s_rev:
    print('YES')
else:
    print('NO')

sy79: 单词倒序 简单

https://sunnywhy.com/sfbj/3/6/79

给定一堆用空格隔开的英文单词,输出这些英文单词的倒序(单词内部保持原序)。

输入描述

一堆英文单词,每个单词不超过10个字符,且仅由大小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。

输出描述

输出英文单词的倒序,单词之间仍然是一个空格隔开,行末不允许有多余的空格。

样例1

输入

Hao Hao Xue Xi

输出

Xi Xue Hao Hao
python
s = input().split()
print(' '.join(s[::-1]))

sy80: 单词倒序II 简单

https://sunnywhy.com/sfbj/3/6/80

给定一堆用空格隔开的英文单词,将每个单词内部逆序后输出(单词顺序不变)。

输入描述

一堆英文单词,每个单词不超过10个字符,且仅由大小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。

输出描述

输出每个单词内部逆序后的结果,单词之间仍然是一个空格隔开,行末不允许有多余的空格。

样例1

输入

Hao Hao Xue Xi

输出

oaH oaH euX iX
python
s = input().split()
ans = []
for token in s:
    ans.append(token[::-1])
print(' '.join(ans))

sy81: 单词数 简单

https://sunnywhy.com/sfbj/3/6/81

给定一堆用空格隔开的英文单词,统计单词个数。

输入描述

一堆英文单词,每个单词不超过10个字符,且仅由大小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。

输出描述

输出一个整数,表示单词的个数。

样例1

输入

good good study

输出

3
python
print(len(input().split()))

sy82: 首字母大写 简单

https://sunnywhy.com/sfbj/3/6/82

给定一堆用空格隔开的英文单词,将每个单词的首字母改为大写后输出。

输入描述

一堆英文单词,每个单词不超过10个字符,且仅由小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。

输出描述

输出每个单词首字母大写后的结果,单词之间仍然是一个空格隔开,行末不允许有多余的空格。

样例1

输入

good good study

输出

Good Good Study
python
s = input().strip().split()
ans = [word.capitalize() for word in s]
print(' '.join(ans))

sy83: 公共前缀 简单

https://sunnywhy.com/sfbj/3/6/83

给定个字符串,求它们的公共前缀。

输入描述

第一行为一个正整数n(2n20),表示字符串的个数。

接下来行,每行一个字符串(仅由大小写字母组成),每个字符串的长度不超过50。

输出描述

输出个字符串的公共前缀。如果没有公共前缀,那么输出空行。

样例1

输入

3
actrpg
actfps
actarpg

输出

act

样例2

输入

3
actrpg
Actfps
actarpg

输出

python
def common_prefix(strs):
    if not strs:
        return ""
    
    # Start with the first string as the prefix
    prefix = strs[0]
    
    for s in strs[1:]:
        # Update the prefix by comparing it with each string
        while s[:len(prefix)] != prefix and prefix:
            prefix = prefix[:-1]
        if not prefix:
            break
    
    return prefix

if __name__ == "__main__":
    n = int(input().strip())
    strs = [input().strip() for _ in range(n)]
    result = common_prefix(strs)
    print(result)

sy84: 连续相同字符统计 简单

https://sunnywhy.com/sfbj/3/6/84

给定一个字符串,统计其中连续出现的相同字符个数。

输入描述

一个非空字符串(长度不超过100,仅由小写字母组成)。

输出描述

按从左到右字符出现的顺序,输出每个字符连续出现的个数。

其中每个字符输出一行,每行以空格为分隔,输出该字符与出现的个数。

样例1

输入

abbbcc

输出

a 1
b 3
c 2

样例2

输入

ccbbc

输出

c 2
b 2
c 1
python
def count_consecutive_characters(s):
    if not s:
        return

    result = []
    current_char = s[0]
    count = 1

    for char in s[1:]:
        if char == current_char:
            count += 1
        else:
            result.append((current_char, count))
            current_char = char
            count = 1
    result.append((current_char, count))

    for char, count in result:
        print(f"{char} {count}")

if __name__ == "__main__":
    s = input().strip()
    count_consecutive_characters(s)

sy85: C语言合法变量名简单

https://sunnywhy.com/sfbj/3/6/85

一个合法的C语言变量名需要满足:

  • 所有字符必须由且仅由字母(A-Z,a-z)、数字(0-9)、下划线(_)组成;
  • 首字符不能是数字,可以是字母或下划线;
  • 不能是C语言关键字,如if、while等。

给定一个C语言关键字的字符串,判断其是否可以作为合法的C语言变量名。

输入描述

一个非空字符串(长度不超过20)。数据保证不会出现C语言关键字。

输出描述

如果可以作为合法的C语言变量名,那么输出YES,否则输出NO。

样例1

输入

a1

输出

YES

样例2

输入

1a

输出

NO
python
def is_valid_c_variable_name(s):
    c_keywords = {
        "auto", "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", 
        "float", "for", "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", 
        "sizeof", "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Alignas", 
        "_Alignof", "_Atomic", "_Bool", "_Complex", "_Generic", "_Imaginary", "_Noreturn", "_Static_assert", "_Thread_local"
    }

    if not s:
        return "NO"

    if s in c_keywords:
        return "NO"

    if not (s[0].isalpha() or s[0] == '_'):
        return "NO"

    for char in s[1:]:
        if not (char.isalnum() or char == '_'):
            return "NO"

    return "YES"

if __name__ == "__main__":
    s = input().strip()
    print(is_valid_c_variable_name(s))