3 Star 60 Fork 5

programmercarl / kamacoder-solutions

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0014.句子缩写.md 4.50 KB
一键复制 编辑 原始数据 按行查看 历史

14. 句子缩写

题目链接

C++

#include<iostream>
#include<string>
using namespace std;
char changeChar(char & a) { // 小写变大写
    if (a >= 'a' && a <= 'z') a -= 32;
    return a;
}
int main() {
    int n;
    string result, s;
    cin >> n;
    getchar(); // 吸收一个回车,因为输入n之后,要输入一个回车
    while (n--) {
        result = "";
        getline(cin, s);
        result += changeChar(s[0]);
        for (int i = 1; i < s.size() - 1; i++) { // 单词之间可能有多个空格
            if (s[i] == ' ' && s[i + 1] != ' ') result += changeChar(s[i + 1]);
        }
        cout << result << endl;
    }
}

Java

import java.util.*;
 
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            sc.nextLine();
            for (int i = 0; i < n; i++) {
                String line = sc.nextLine().trim();
                char[] arr = line.toCharArray();
                StringBuilder sb = new StringBuilder();
                int j = 0;
                while (j < arr.length) {
                    if (arr[j] <= 'z' && arr[j] >= 'a') {
                        arr[j] = Character.toUpperCase(arr[j]);
                    }
                    sb.append(arr[j]);
                    while (j < arr.length && arr[j] != ' ') {
                        j++;
                    }
                    while (j < arr.length && arr[j] == ' ') {
                        j++;
                    }
                }
                System.out.println(sb.toString());
            }
        }
    }
}

Java思路2

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        in.nextLine();
        for (int j = 0; j < n; j++) {
            String s=in.nextLine();
            StringBuilder sb=new StringBuilder();
            boolean flag=true;
            for (int i=0;i<s.length();i++ ){
                char c=s.charAt(i);
                if (flag) {  
                    sb.append(c);  //只收集首字母
                    flag=false;
                }
                if(c==' '){
                    while(i<s.length()&&s.charAt(i)==' '){
                        i++;
                    }
                    i--;//和for循环一起就多加了一次
                    flag=true; //表示空格读完,接下来可以收集首字母了
                }
            }
            System.out.println(sb.toString().toUpperCase());
        }
    }
}

Java思路3 使用正则表达式去除一个空格或多个空格,然后直接遍历求解

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int n = in.nextInt();
            in.nextLine();
            for (int i = 0; i < n; i++) {
                String line = in.nextLine();
                String[] words = line.split("\\s+");
                StringBuilder sb = new StringBuilder();
                for (int i1 = 0; i1 < words.length; i1++) {
                    char[] charArray = words[i1].toCharArray();
                    sb.append(charArray[0]);
                }
                System.out.println(sb.toString().toUpperCase());
            }
        }
        in.close();
    }

}

python

T = int(input())
for _ in range(T):
    words = input().split()
    abbr = ''.join(word[0].upper() for word in words)
    print(abbr)

Go

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	var n int
	_, err := fmt.Scan(&n)
	if err != nil {
		return
	}
	scanner := bufio.NewScanner(os.Stdin)
	for i := 0; i < n && scanner.Scan(); i++ {
		input := scanner.Text()
		words := strings.Fields(input)
		var res string
		for _, word := range words {
			res += word[:1]
		}
		fmt.Println(strings.ToUpper(res))
	}
}

Js

const rl=require("readline").createInterface({input:process.stdin});
const iter=rl[Symbol.asyncIterator]();
const readline=async ()=>(await iter.next()).value;

async function main(){
  const n=parseInt(await readline());
  for(let i=0;i<n;i++){
    let line=await readline();
    let words=line.split(/\s+/);
    words.forEach(item=>{process.stdout.write(item.toUpperCase().charAt(0))});
    console.log();
  }
}

main();

C

1
https://gitee.com/programmercarl/kamacoder-solutions.git
git@gitee.com:programmercarl/kamacoder-solutions.git
programmercarl
kamacoder-solutions
kamacoder-solutions
main

搜索帮助