2020.5.24
对不起,浪费了一周的时间
这一周回了学校有很多琐碎的事,其实主要自己懒惰了= =
不过后面就不会了,调整过来了!
冲! 冲! 冲!
题目:计算单词个数
输入:
this is a book
输出:
4
Java 代码
import java.util.Scanner;
public class Word_Count {
public Word_Count(String s) {
String regex = "\\s";//正则表达式
String words[] = s.split(regex);//字符串分割
System.out.println(words.length);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
new Word_Count(input.nextLine());
}
}
C 代码
#include<stdio.h>
int main()
{
char ch;
int state = 0;//高低电平
int words = 0;//计算单词个数
while (~scanf("%c", &ch))
{
if (ch != ' ' && state == 0)
{
words++;
state = 1;//第一个非空字符,置高电平
}
if (ch == ' ')//一个单词结束后,空格符置低电平
state = 0;
if (ch == '\n')//换行符控制输入数量,输入完毕,跳出循环
break;
}
printf("%d\n",words);
}
从网站上看到的
脉冲计数:
把非空格符的字符看作高电平 state=1,空格符看作低电平state=0
计算的不是高电平的个数,而是脉冲个数,即连续高电平的个数
C语言的这个算法学到了学到了,还是有大佬的~~
Java用了正则表达式和一些函数方法
如有错误,恳请指正~~
算法题目思路来源:https://www.dotcpp.com/