Python自学之2016.4.7

明日把学习分成三块,算是4.4这篇的填补。

1.基础知识

  • linux
  • Mysql
  • 数据结构
  • 常用算法
  • web前端
  • 常用框架
  • Python
  • Ajax
  • 官方文档,英文文档的阅读能力。
  • 一本完整的图书,至少敲四回。

2.类型经验

  • Django做出来一个总体的网站,包括web应用,前端页面,服务器部署这一个,都要烂熟。
  • 爬虫系统,一个完全的,健壮的爬虫。包括数据收集和剖析

    python数据解析学习路径.jpg


3.算法题

  • 最终就是刷题,我觉得做题是免不了的,明天知晓多个网站lintcodehihocoder做了瞬间题发现有点无法动手,甚至有一种很生疏的觉得,才发现自己欠缺的太多,从前些天起始要多做题。

Paste_Image.png

下一场前日除了做题就是继续读书javascript技术了,理清了上学的门径以后就不觉得陷入了海洋无从学起了。


Javascript部分

本身只能说自己高估了协调的速度,截止到明日自家才推向到第八章。明日继续,不强求速度,保证质料先。

算法题部分

  • 题目一

Paste_Image.png

算法实现

Paste_Image.png

Paste_Image.png

这道题的解法用到了字符串切片,split那多少个函数,来看一下文档的介绍。

Paste_Image.png

箭头的有些就是这道题里用到的。没有参数的意况下把字符串分别切块。以应对样例的输入,这道题看起来简单,实际上也是在挖坑。

  • 题目二

1039 : 字符消除

岁月范围:1000ms
单点时限:1000ms
内存限制:256MB

描述
小Hi如今在玩一个字符消除游戏。给定一个只含有大写字母”ABC”的字符串s,消除过程是之类举行的:

1)如果s包含长度超越1的由同样字母组成的子串,那么这么些子串会被同时排除,余下的子串拼成新的字符串。例如”ABCCBCCCAA”中”CC”,”CCC”和”AA”会被同时免去,余下”AB”和”B”拼成新的字符串”ABB”。
2)上述消除会反复一轮一轮展开,直到新的字符串不带有相邻的一模一样字符截至。例如”ABCCBCCCAA”经过一轮消除拿到”ABB”,再经过一轮消除拿到”A”

一日游中的每一关小Hi都会师对一个字符串s。在摒除先导前小Hi有机会在s中自由地方(第一个字符在此以前、最终一个字符之后以及附近六个字符之间)插入任意一个字符(‘A’,’B’或者’C’),得到字符串t。t经过一体系消除后,小Hi的得分是排除掉的字符的总额。

请帮助小Hi总结要什么插入字符,才能博取最高得分。

输入
输入第一行是一个整数T(1<=T<=100),代表测试数据的数目。
从此T行每行一个由’A”B”C’组成的字符串s,长度不领先100。

输出
对于每一行输入的字符串,输出小Hi最高能收获的分数。

提示
第一组数据:在”ABCBCCCAA”的第2个字符后插入’C’拿到”ABCCBCCCAA”,消除后收获”A”,总共消除9个字符(包括插入的’C’)。

其次组数据:”AAA”插入’A’拿到”AAAA”,消除后获取””,总共消除4个字符。
其三组数据:无论是插入字符后取得”AABC”,”ABBC”如故”ABCC”都最多消除2个字符。

样例输入
3ABCBCCCAAAAAABC

样例输出
942

本身为啥要选这道题!我不会!
唯独仍旧找到了大神的python解题代码,大家观赏一下。

# coding= utf-8
import sys
import re
if __name__ == "__main__":
    def eliminate_string(s):
        pat = re.compile(r"A{2,}|B{2,}|C{2,}")
        while pat.findall(s):
            s = re.sub(pat, "", s)
        return s
    numLines = int(sys.stdin.readline())
    for i in range(1, numLines + 1):
        line = sys.stdin.readline()
        oldLen = len(line)
        minLen = oldLen
        for insertIndex in range(0, oldLen - 1):
            for c in ("A", "B", "C"):
                newLine = line[:insertIndex] + c + line[insertIndex:]  # 插入一个字母后的字符串
                lineLeft = eliminate_string(newLine)
                if len(lineLeft) < minLen:
                    minLen = len(lineLeft)
                    minLine = lineLeft
        print oldLen - minLen + 1  # 算的是插入一个字母之后的消除长度

相关文章