华为机试第一题:HJ1 字符串最后一个单词的长度

一、题目描述

①描述

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

②输入描述

输入一行,代表要计算的字符串,非空,长度小于5000。

③输出描述

输出一个整数,表示输入字符串最后一个单词的长度。

④示例1

输入: hello nowcoder
输出: 8
说明: 最后一个单词为nowcoder,长度为8

二、代码实现

①Java代码实现

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args){
    
    
    	Scanner scanner=new Scanner(System.in);
    	String str=scanner.nextLine();
    	String[] array=str.split(" ");
    	System.out.println(array[array.length-1].length());
	}
}

②Java代码实现(运行时间和占用内存较优的情况下的实现代码)

import java.io.InputStream;
public class Main{
    
    
    public static void main(String[] args) throws Exception {
    
    
        int number = 0;
        InputStream in = System.in;
        char c = (char) in.read();
        while(c != '\n'){
    
    
            if(c == ' '){
    
    
                number = 0;
            }
            else{
    
    
                number++;
            } 
            c = (char) in.read();
        }
        System.out.println(number);
    }
}

③C++代码实现

#include<iostream>
#include<string>
using namespace std;
int main(){
    
    
    string s;
    getline(cin,s);
    int number=0;
    int len=s.length();
    for(int i=(len-1);i>=0;i--){
    
    
        if(s[i]!=' ')
        {
    
    
            number++;
        }
        else
        {
    
    
            break;
        }
    }
    cout<<number<<endl;
    return 0;
}

④C实现

#include<stdio.h>
#include<string.h>
int main(){
    
    
    char s[5000];
    int i=0;
    int number=0;
    while(scanf("%c",&s[i++])!=EOF){
    
    
        if(s[i-1]==' '){
    
    
            number=0;
        }else{
    
    
            number++;
        }
    };
    printf("%d",number-1);
}

猜你喜欢

转载自blog.csdn.net/faramita_of_mine/article/details/123719977