字符

WordCount(Java实现)

跟風遠走 提交于 2020-03-25 02:50:29
Github项目地址: https://github.com/linzworld/word-count 项目相关要求 题目描述 Word Count 实现一个简单而完整的软件工具(源程序特征统计程序)。 进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具。 进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。 WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。 实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。 具体功能要求: 程序处理用户需求的模式为: wc.exe [parameter] [file_name] 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数(完成) wc.exe -w file.c //返回文件 file.c 的词的数目 (完成) wc.exe -l file.c //返回文件 file.c 的行数(完成) 扩展功能: -s 递归处理目录下符合条件的文件。(未完成) -a 返回更复杂的数据(代码行 / 空行 / 注释行)。(完成) 空行:

软工作业(一)

狂风中的少年 提交于 2020-03-25 00:54:08
软工作业(一):实现WordCount命令行程序 github传送门 实现一个简单而完整的软件工具(源程序特征统计程序)。 进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具。 进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。 WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。 实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。 具体功能要求: 程序处理用户需求的模式为: wc.exe [parameter] [file_name] 基本功能列表(已完成): wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file.c //返回文件 file.c 的词的数目 wc.exe -l file.c //返回文件 file.c 的行数 扩展功能: -s 递归处理目录下符合条件的文件。(未完成) -a 返回更复杂的数据(代码行 / 空行 / 注释行)。(已完成) 空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”。 代码行

第一个只出现一次的字符

自闭症网瘾萝莉.ら 提交于 2020-03-25 00:23:27
问题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这个问题最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出 现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比较,因此这种思路时间复杂度是O(n 2 )。 由于题目与字符出现的次数相关,我们是不是可以统计每个字符在该字符串中出现的次数?要达到这个目的,我们需要一个数据容器来存放每个字符的出现次数。在这个数据容器中可 以根据字符来查找它出现的次数,也就是说这个容器的作用是把一个字符映射成一个数字。在常用的数据容器中,哈希表正是这个用途。 哈希表是一种比较复杂的数据结构。由于比较复杂,STL中没有实现哈希表,因此需要自己实现一个。但由于本题的特殊性,只需要一个非常简单的哈希表就能满足要求。由于字符 (char)是一个长度为8的数据类型,因此总共有可能256 种可能。于是创建一个长度为256的数组,每个字母根据其ASCII码值作为数组的下标对应数组的对应项,而数组中存储的 是每个字符对应的次数。这样我们就创建了一个大小为256,以字符ASCII码为键值的哈希表。第一遍扫描这个数组时,每碰到一个字符,在哈希表中找到对应的项并把出现的次数增 加一次。这样在进行第二次扫描时

2018.8.17 题解 2018暑假集训之编辑距离

耗尽温柔 提交于 2020-03-24 19:22:20
应该是一个很经典的题目了吧 上题面描述 概念 字符串的编辑距离,又称为Levenshtein距离,由俄罗斯的数学家Vladimir Levenshtein在1965年提出。是指 利用字符操作,把字符串A转换成字符串B所需要的最少操作数 。其中,字符操作包括: 删除一个字符 a) Insert a character 插入一个字符 b) Delete a character 修改一个字符 c) Replace a character 例如对于字符串"if"和"iff",可以通过插入一个'f'或者删除一个'f'来达到目的。 一般来说,两个字符串的编辑距离越小,则它们越相似。如果两个字符串相等,则它们的编辑距离(为了方便,本文后续出现的“距离”,如果没有特别说明,则默认为“编辑距离”)为0(不需要任何操作)。不难分析出,两个字符串的编辑距离肯定不超过它们的最大长度(可以通过先把短串的每一位都修改成长串对应位置的字符,然后插入长串中的剩下字符)。 问题描述 给定两个字符串A和B,求字符串A至少经过多少步字符操作变成字符串B。 对于这个问题来讲我们首先想到的是用bfs解决 然而发现会TLE Q_Q 对于求最值的问题,我们考虑搜索、dp、贪心 已经排除搜索(同样易证得贪心不可行)于是考虑用dp解决 本题有一个很类似的问题 题目传送门 同样是对两个字符串上的dp

字符移位

狂风中的少年 提交于 2020-03-24 07:16:01
来源: 牛客网 http://www.nowcoder.com/questionTerminal/7e8aa3f9873046d08899e0b44dac5e43 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗? 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述: 对于每组数据,输出移位后的字符串。 输入例子: AkleBiCeilD 输出例子: kleieilABCD 要求不能用额外的空间,那就只能就地移动了。遍历到一个大写字母,将其后的所有字符向前移动一步,然后将此大写字母放到末尾。重复以上过程。 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String s = sc.nextLine(); char[] a = s.toCharArray(); int n = s.length(); int end = n; for (int i = 0; i < end; ++i) { if (a[i] >= 'A' &&

boost sp 2 regex语法规范 正则表达式

为君一笑 提交于 2020-03-24 04:27:06
3 月,跳不动了?>>> boost sp 2 regex语法规范 正则表达式 这部分包含了boost.regex库的正则表达式的语法。这是一份程序员指南,实际的语法由在程序中的正则表达式的选项决定。(译注:即regex类构造函数的flag参数。) 文字(Literals) 除了一下字符,其它的任何字符都表示其字面意义(literal)。 “.”, “|”, “*”, “?”, “+”, “(“, “)”, “{“, “}”, “[“, “]”, “^”, “$” 和 “\” 要使用这些字符的字面意义,要在前面使用 “\” 字符。一个字面意义的字符匹配其本身,或者匹配 traits_type::translate() 的结果,这里的traits_type 是 basic_regex 类的特性模板参数(the traits template parameter)。 通配符(Wildcard):点号 ”.” 点号 ”.” 匹配任意的单个字符。当在匹配算法中使用了 match_not_dot_null 选项,那么点号不匹配空字符(null character)。当在匹配算法中使用了 match_not_dot_newline 选项,那么点号不匹配换行字符(newline character)。 重复(Repeats) 一个重复是一个表达式(译注:正则表达式)重复任意次数。

JS 常用正则表达式备忘录

假装没事ソ 提交于 2020-03-23 22:16:56
3 月,跳不动了?>>> 匹配正则 使用 .test() 方法 let testString = "My test string" ; let testRegex = /string/ ; testRegex.test(testString); 匹配多个模式 使用操作符号 | const regex = /yes|no|maybe/ ; 忽略大小写 使用 i 标志表示忽略大小写 const caseInsensitiveRegex = /ignore case/i ; const testString = 'We use the i flag to iGnOrE CasE' ; caseInsensitiveRegex.test(testString); // true 提取变量的第一个匹配项 使用 .match() 方法 const match = "Hello World!" .match( /hello/i ); // "Hello" 提取数组中的所有匹配项 使用 g 标志 const testString = "Repeat repeat rePeAT" ; const regexWithAllMatches = /Repeat/gi ; testString.match(regexWithAllMatches); // [ "Repeat" , "repeat" ,

Word Count(java实现)

纵然是瞬间 提交于 2020-03-23 19:32:34
  Word Count 一、项目相关要求   1.wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。 实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。   2.具体功能要求:    程序处理用户需求的模式为:    wc.exe [parameter] [file_name]   3.基本功能列表:    wc.exe -c file.c (已实现) //返回文件 file.c 的字符数    wc.exe -w file.c (已实现) //返回文件 file.c 的词的数目    wc.exe -l file.c (已实现) //返回文件 file.c 的行数   4.扩展功能: -s 递归处理目录下符合条件的文件。   -a 返回更复杂的数据(代码行 / 空行 / 注释行)。(已实现)    空行:本行全部是空格或格式控制字符(//s+),如果包括代码,则只有不超过一个可显示的字符,例如“{”。    代码行:本行包括多于一个字符的代码(匹配字符就+1。    注释行:本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释:   } //注释

JS截取字符串常用方法

我的未来我决定 提交于 2020-03-23 18:27:29
reference:http://www.jb51.net/article/42482.htm 使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组 函数:Join() 功能:使用您选择的分隔符将一个数组合并为一个字符串 例子: var delimitedString=myArray.join(delimiter); var myList=new Array(”jpg”,”bmp”,”gif”,”ico”,”png”); var portableList=myList.join(”|”); //结果是jpg|bmp|gif|ico|png 函数:substring() 功能:字符串截取,substring 方法用于提取字符串中介于两个指定下标之间的字符。 语法 :stringObject.substring(start,stop) 参数 描述 start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 stop 可选。一个非负的整数,比要提取的子串的最后一个字符在

JavaScript 截取字符串

耗尽温柔 提交于 2020-03-23 18:02:47
1.substring()方法:1).用于截取字符串中介于两个指定下标之间的字符。          2).返回的字符串 包括开始处 的字符,但 不包括结束处 的字符。          3).substring()方法 不接受负的参数 。  语法:string.substring(start,stop):   1).start是必填值,且是一个非负的整数。stop是可选项,也是一个非负的整数;如果省略该参数,返回的字符串是从start位置一直到结尾。   2).如果start=stop,返回一个空字符串(即长度为0的字符串);如果start>stop,在提取字符串之前会先交换这两个参数。   代码:      结果显示:    2.slice(start,stop)方法的用法与substring()方法类似,唯一不同的是,slice()方法允许传入的参数为负数。   1)start:必填。如果是负数,则从字符串的尾部开始截取,也就是说,-1指字符串的最后一个字符,-2位倒数第二个字符,以此类推。   2)stop:可选。若无stop参数,返回从start到字符串结尾的字符串。若stop是负数,从字符串的尾部开始截取。若start>stop,返回空字符串    3.substr(start,length)方法:指定字符串的开始位置和长度,因此可以取代substring(