一、前记(1/3)

先说明一个事情嗷,因为下个星期就要回学校了,所以下个星期暂停更新“算法大挑战”系列,下个星期更多的是,整理算法内容和将之前一直咕咕的文章给写出来(多是wp)。

二、题目描述

三、解题思路

1、我的思路

我的思路我感觉比较复杂。首先可以确定的是,我们是从头开始逐个扫描的。所以要考虑的是如何识别出一个单词是否为句子的开头或者为句子的中的某一个单词而已。题目中说了,不合法的文章一共有两种:第一种为句子的第一个字母用了小写,第二种为不是首字母的单词用了大写。我们就需要设置一个判断位,用来判断当前单词是否为句首单词(句首的前一个字符必为“.”)。当当前字符为“.”时判断位恢复到True,有其他字符的时候判断位为False。

参考代码:

# coding=utf-8
class Solution:
    """
    @param s: the article
    @return: the number of letters that are illegal
    """
    def count(self, s):
        # Write your code here.
        i=True  #判断句子的开头
        count=0 #作为错词计数
        for q in range(len(s)):
            c=s[q]  #开始检查,下面就是一些检查条件
            if i and c>='a'and c<='z':
                count+=1
            if (c>='a' and c<='z') or (c >= 'A' and c <= 'Z'):
                i = False
            if c == '.':
                i = True
            if (q>0 and (s[q-1]!='.' and s[q-1]!=',' and s[q-1]!=' ') and (c >= 'A' and c<='Z')):
                count += 1
        return count

2、别人的思路

其他人的思路还暂时没看到