字符统计

面试题4:替换空格

一个人想着一个人 提交于 2020-02-28 14:43:50
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy",则输出”We%20are%20happy". 原因:在网络编程中,如果URL参数中含有特殊字符,如:空格、“#”等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器识别的字符。转换规则是在“%”后面跟上ASCII码的两位十六进制的表。比如:空格的ASCII玛是32,即十六进制的0x20,因此空格被替换成“%20”。 时间复杂度为O(n2)不足以拿到Offer 现在我们考虑怎么做替换操作。最直观的做法是从头到尾扫描字符串,每一次碰到空格字符的时候做替换。由于是把1个字符替换称3个字符,我们必须把空格后面的所有的字符都后移两个字节,否则就有两个字符被覆盖了。 举个例子,我们从头到尾把“We are happy"中的每 一个空格替换成 ”%20“。为了形象期间,我们可以用一个表格来表示字符串,表格中的每个格子表示一个字符。如下图所示: 我们替换了第一个空格,这个字符串编程图b中的内容,表格中灰色背景表示需要移动的字符。接着我们替换第二个空格,替换之后的内容如图c所示。同时我们注意到用深灰色的北京标注”happy“部分被移动了两次。 假设字符的长度是n。对每个空格字符,需要移动后面O(n)个字符,因此对含有O(n)个空格字符串而言总的时间效率是O(n2).

2020牛客寒假算法基础集训营1 nozomi和字符串

六眼飞鱼酱① 提交于 2020-02-10 01:25:22
题目   nozomi看到eli在字符串的“花园”里迷路了,决定也去研究字符串问题。   她想到了这样一个问题:   对于一个 “ 0 1 ” 串而言,每次操作可以把 0 字符改为 1 字符,或者把 1 字符改为 0 字符。所谓 “ 0 1 ” 串,即只含字符 0 和字符 1 的字符串。   nozomi有最多 次操作的机会。她想在操作之后找出一个尽可能长的连续子串,这个子串上的所有字符都相同。   nozomi想问问聪明的你,这个子串的长度最大值是多少?   注: 次操作机会可以不全部用完。   如果想知道连续子串的说明,可以去问问eli,nozomi不想再讲一遍。 题解   显然操作要不就是把尽可能多的 1 变成 0 ,要不就是把尽可能多的 0 变成 1 。取这两种情况的最优值即可。 对于 0 变 1 的情况,可以统计每个 1 的连续前缀 1 的位置和连续后缀 1 的位置。然后进行枚举,即连续变化 k 个 0 ,最后通过连续后缀 1 的位置和连续前缀 1 的位置得出答案。   对于 1 变0 的情况,同理。 代码    v0记录着每个字符 0 的下标,更重要的是,v0也意味着每个 1 的连续前缀位置和连续后缀位置。    v1记录着每个字符 1 的下标,更重要的是,v1也意味着每个 0 的连续前缀位置和连续后缀位置。 #include<bits/stdc++.h> using

hdu2017(存疑)

試著忘記壹切 提交于 2020-02-06 22:50:45
Problem Description 对于给定的一个字符串,统计其中数字字符出现的次数。 Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。 Output 对于每个测试实例,输出该串中数值的个数,每个输出占一行。 Sample Input 2 asdfasdf123123asdfasdf asdf111111111asdfasdfasdf Sample Output 6 9 getchar()用的不熟,抄了大佬的码但是觉得怪怪的,虽然ac了但是与题目的意思不符,打完一行字符后,enter直接会出结果,要怎么改才能做到每行字符打完再出结果,上个码,记录一下 # include <stdio.h> int main ( void ) { int n , count , i ; char a [ 101 ] ; while ( scanf ( "%d\n" , & n ) != - 1 ) { while ( n -- ) { getchar ( ) ; scanf ( "%s" , a ) ; count = 0 ; for ( i = 0 ; a [ i ] != '\0' ; i ++ ) { if ( a [ i ] >= '0' && a [ i ] <= '9' ) count ++ ; } printf

ZZULIOJ 1132: 数字字符统计

谁说我不能喝 提交于 2020-02-04 22:14:32
题目描述 对于给定的一个字符串,统计其中数字字符出现的次数。字符串长度不超过1000. 输入 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。 输出 对于每个测试实例,输出该串中数字字符的个数,每个输出占一行。 样例输入 2 asdfasdf123123asdfasdf asdf111111111asdfasdfasdf 样例输出 6 9 #include<stdio.h> int main(){ int n,i,count; char ch; scanf("%d",&n); getchar(); //接收输入n后的回车 for(i=0;i<n;i++){ count=0; while(scanf("%c",&ch),ch!='\n'){ if(ch>='0'&&ch<='9') count++; } printf("%d\n",count); } return 0; } 来源: CSDN 作者: vivi_cin 链接: https://blog.csdn.net/vivi_cin/article/details/104174758

ZZULIOJ 1228: 字符统计

我的梦境 提交于 2020-02-01 18:25:37
题目描述 给出一串字符,要求统计出里面的字母、数字、空格以及其他字符的个数。 字母:A, B, …, Z、a, b, …, z组成 数字:0, 1, …, 9 空格:" "(不包括引号) 剩下的可打印字符全为其他字符。 输入 测试数据有多组。 每组数据为一行(长度不超过100000)。 数据至文件结束(EOF)为止。 输出 每组输入对应一行输出。 包括四个整数a b c d,分别代表字母、数字、空格和其他字符的个数。 样例输入 Copy A0 , ab12 4$ 样例输出 Copy 1 1 1 1 2 3 1 1 来源/分类 `import java.util.*; public class Main { public static void main (String[] args) { Scanner in= new Scanner (System.in); while(in.hasNext()) { String s1=in.nextLine(); int a=0,c=0,d=0,e=0; char b[]=s1.toCharArray(); for(int i=0;i<s1.length();i++) { if((b[i]<=‘z’&&b[i]>=‘a’)||(b[i]<=‘Z’&&b[i]>=‘A’)) a++; else if(b[i]<=‘9’&&b[i]>=‘0’)

PAT-乙级-1042.字符统计

雨燕双飞 提交于 2020-02-01 05:07:16
题目 请编写程序,找出一段给定文字中出现最频繁的那个英文字母。 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。 输出格式: 在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。 输入样例: This is a simple TEST. There ARE numbers and other symbols 1&2&3… 输出样例: e 7 解法 要点 输入字符串 :可以输入空格 getline(cin,s); 利用数组存储出现的次数 求字符对应的十进制:s[i]-NULL; #include <iostream> #include <string> #include <cctype> #include <stdio.h> using namespace std ; int main ( ) { string s ; getline ( cin , s ) ; //输入,不能用cin int num [ 128 ] = { 0 } ; // ASCII表对应的十进制是数组下标 for ( int i = 0 ; i < s . size ( ) ; i ++ ) { if

第六章 字符型数据

耗尽温柔 提交于 2020-02-01 00:18:54
第六章 字符型数据 1·字符型常量 C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。 说明: (1)单引号中的大写字母和小写字母代表不同的字符常量 (2)单引号中的空格符’ ’ 也是一个字符常量,但不能写成两个连续的单引号 (3)字符常量只能包含一个字符,‘agc’是非法的 (4)字符常量只能由单引号括起来,不能用双引号括起来 字符常量在内存中占一个字节,存放的是字符的ASCII代码值。C语言规定,所有字符常量都作为整形量来处理,在计算机内部,其对应的整型数就是ASCII字符集中该字符的序号(即ASCII代码值)。 字符常量‘A’的值是65(八进制数101)‘a’97(141)‘0’48(60)‘ ’32(40) 转义字符常量 转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内。 字符形式 功能 字符形式 功能 \n 回车换行 \ 反斜杠字符‘\’ \t 横向跳若干格(代表“Tab”键) \’ 单引号(撇号)字符 \v 竖向跳格 \’’ 双引号字符 \r 回车符 \ddd 三位八进制数代表一个ASCII字符 \f 换页符 \xhh 二位十六进制数代表的一个ASCII字符 \b 退格符(代表“Backspace”键) \0 空值

字符串_月隐学python第7课

六眼飞鱼酱① 提交于 2020-01-22 00:19:42
一、字符串 字符串就是由若干个不同的unicode字符组成的不可变序列 1 .字符串创建 2.获取字符 因为是不可变序列,所以不能修改单个字符; 凡是修改字符串的操作都产生新串 3.字符串转义 常⻅转义字符 原生字符 如果在字符串中不把\当做转移字符,可以使⽤ 4.序列通⽤操作 4 字符串常用函数 4.1 字符串查找和替换 str1 = 'a fox jumped over the fence' 4.2 字符串分隔和组合 4.3 字符串判断 4. 4字符串转换 4.5 其它方法 5. 字符串格式化 用%格式化 用format格式化 ⼆、字节 在python3中最重要的特性是对文本和⼆进制数据做了更加清晰的区分,⽂本总是Unicode,由字符类型表示,⽽二进制数据则由byte类型表示, python3不会以任意隐式⽅式混用字节型和字符型,也因此在python3中不能拼接字符串和字节包(python2中可以,会自动进行转换),也不能在字节包中搜索字符串,也不能将字符串传⼊参数为字节包的函数。Bytes 对象是由单个字节作为基本元素(8位,取值范围 0-255)组成的序列,为不可变对象。 bytes对象只负责以二进制字节序列的形式记录所需记录的对象,⾄于该对象到底表示什么(⽐如到底是什么字符)则由相应的编码格式解码所决定。Python3中, bytes通常用于⽹络数据传输、⼆进制图片和

387. First Unique Character in a String

喜欢而已 提交于 2020-01-21 04:43:40
387. 字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事项: 您可以假定该字符串只包含小写字母。 解法一 //时间复杂度O(n), 空间复杂度O(n) class Solution { public: int firstUniqChar(string s) { unordered_map<char, int> um; for(char c : s) ++um[c]; for(int i = 0; i < s.length(); i++) { if(um[s[i]] == 1) return i; } return -1; } }; 遍历两次字符串。第一次统计字符个数,存储在哈希表中;第二次找首个个数为1的元素,返回。 2019/05/01 17:37 来源: CSDN 作者: wanghy1995 链接: https://blog.csdn.net/sinat_27953939/article/details/103784820

例题

最后都变了- 提交于 2020-01-17 14:50:01
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 判断三角号的三种形式: 13. float型,6位小数,%f double,15位小数,%lf 超过位数就不确保精确性 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 输出100-200的全部素数 32. 输入两个正整数m,n求其最大公约数和最小公倍数 33. 输入一行字符,分别统计其中英文字母,空格,数字和其他字符的个数 34. 求1-20的阶乘之和 35. 水仙花数:一个三位数,153=1 1 1+5 5 5+3 3 3; 36.完数:一个数是它因子之和,如6的因子为1 2 3,6=1+2+3,求1000之内的完数 37. 38. 39. 40. 41. 42. 43 44. 45. 46. 47. 48. 49. 50. 51. 来源: CSDN 作者: 张娜1 链接: https://blog.csdn.net/weixin_45688302/article/details/103744773