首页 > 试题广场 >

首字母大写

[编程题]首字母大写
  • 热度指数:27119 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。 在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。

输入描述:
输入一行:待处理的字符串(长度小于100)。


输出描述:
可能有多组测试数据,对于每组数据,
输出一行:转换后的字符串。
示例1

输入

if so, you already have a google account. you can sign in on the right.

输出

If So, You Already Have A Google Account. You Can Sign In On The Right.
while True:
    try:
        string = list(input())
        lastBlank = True
        for i in range(len(string)):
            if string[i].isalpha() and lastBlank:
                string[i] = string[i].upper()
                lastBlank = False
            elif string[i] == " " or string[i] ==  "\t" or string[i] == "\r" or string[i] == '\n':
                lastBlank = True
            else:
                lastBlank = False
        print("".join(string))
    except Exception:
        break
编辑于 2018-10-02 23:52:20 回复(0)

python解法如下。


本来准备一行解决的:

# print(" ".join(map(lambda c:c.capitalize(),input().split())))

发现题目中的字符串不是只由空格分隔的,还有可能是制表符,所以这种方法行不通,于是写了另一种方法,通过所有测试。


while True:
    try:
        string=list(input())
        canUpper=True
        for i,v in enumerate(string):
            if v.isalpha() and canUpper:
                string[i]=v.upper()
                canUpper=False
            elif v==" " or v=="\t" or v=="\n" or v=="\r":
                canUpper=True
            else:
                canUpper=False
        print("".join(string))

    except:
        break
发表于 2017-10-16 16:41:52 回复(0)
while 1:
    try:
        s=list(input())
        s[0]=s[0].upper()
        for i in range(1,len(s)-1):
            if s[i]==' ' or s[i]=='\t' or s[i]=='\r' or s[i]=='\n':
                s[i+1]=s[i+1].upper()
        print(''.join(s))
    except:
        break

发表于 2017-09-05 14:31:59 回复(0)