字符串长度

1161 字符串长度(指针专题)

爱⌒轻易说出口 提交于 2020-03-18 15:15:25
题目来源: https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1161 Description 编写一函数len,求一个字符串的长度,注意该长度不计空格。要求用字符指针实现。在主函数中输入字符串,调用该len函数后输出其长度。 int len(char *sp) { //实现sp所指串的长度,不计空格。 } Input 输入一个字符串,以回车结束,长度不超过100。 Output 输出一个整数,单独占一行。 Sample Input What day is today? Sample Output 15 题意描述: 输入一个字符串(长度不超过100) 调用len函数计算该字符串的长度,不计空格 解题思路: 在len函数中判断是否空格,不是计数变量加一,最后返回即可 程序代码: 1 #include<stdio.h> 2 #include<string.h> 3 int len(char *str); 4 int main() 5 { 6 char str[110]; 7 gets(str); 8 printf("%d\n",len(str)); 9 } 10 int len(char *str) 11 { 12 int i,l,count=0;//注意计数变量的初始化 13 l=strlen(str); 14 for(i=0;i<l

C语言字符数组的初始化

可紊 提交于 2020-03-15 22:38:28
1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[ 10 ]={ 'I' , ' ' , 'a' , 'm' , ' ' ,‘h’, 'a' , 'p' , 'p' , 'y' }; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0' )。 2、字符数组与字符串 在c 语言中, 将字符串作为字符数组来处理 。(c++中不是)在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C 语言规定了一个“ 字符串结束标志 ”,以字符' \0’ 代表。如果有一个字符串,其中第10个字符为'\0',则此字符串的有效字符为9个。也就是说,在遇到第一个字符'\0'时,表示字符串结束,由它前面的字符组成字符串。 系统对字符串常量也自动加一个'\0'作为结束符。例如"C Program”共有9个字符,但在内存中占10个字节,最后一个字节'\0'是系统自动加上的。(通过sizeof()函数可验证) 有了结束标志'\0'后,字符数组的长度就显得不那么重要了,在程序中往往依靠检测'\0

【牛客】剑指offer2-替换空格

丶灬走出姿态 提交于 2020-03-03 14:55:07
解题思路: 在Python和Java等语言中,字符串都被设计成不可变的类型,即无法直接修改字符串的某一位字符,需要新建一个字符数组来实现。 如果是用Java或c语言实习,则需要在最开始建立字符数组,该字符数组地长度为原来字符串s的长度的3倍,这样可以保证字符数组能容纳所有替换后的字符。 由于Python语言的特殊性,不需要考虑去设定字符数组的长度问题。 伪代码: 初始化一个list,记为res,用来存放新建的字符串 循环遍历列表s中的每个字符c: 当c为空格时,向res后添加字符串'%20' 当c不为空格时,向res后添加字符c 将列表res转化为字符串并返回 代码: class Solution: def replaceSpace(self, s): """ :param s: str :return: str """ res = [] for c in s: if c == ' ': res.append('%20') else: res.append(c) return "".join(res) 复杂度分析: 时间复杂度O(N):遍历使用O(N),每轮添加(修改)字符操作使用O(1); 空间复杂度O(N):Python建立新的list和Java新建字符数组都使用了线性大小的额外空间 Reference: 1.LeetCode题解 来源: CSDN 作者: sinat

C# 截取指定长度字符串

…衆ロ難τιáo~ 提交于 2020-02-14 13:56:04
/// <summary> /// 截取指定长度字符串 /// </summary> /// <param name="inputString">要处理的字符串</param> /// <param name="len">指定长度</param> /// <returns>返回处理后的字符串</returns> public static string ClipString(string inputString, int len) { bool isShowFix = false; if (len % 2 == 1) { isShowFix = true; len--; } System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding(); int tempLen = 0; string tempString = ""; byte[] s = ascii.GetBytes(inputString); for (int i = 0; i < s.Length; i++) { if ((int)s[i] == 63) tempLen += 2; else tempLen += 1; try { tempString += inputString.Substring(i, 1); } catch { break; } if

回文串问题求解

浪尽此生 提交于 2020-02-12 14:00:31
leecode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-palindromic-substring 解法 暴力求解法,,直接嵌套3层循环,这个算法由于太过暴力,这里不讲,需要知道的是其时间复杂度到了O(n^3) 中心扩展法 从左右到右,以每一个下标为中点进行查找,判断是否能构成最长回文串, 算法注意:奇偶需要区分,例如bb其中心为下标0,1之间 其时间复杂度为O(n^2) manacher(马拉车)算法,其时间复杂度可达到仅为O(n) manacher 算法是本文的重点,其可在O(n)的时间内找到以所有下标为中点的回文串长度。 马拉车算法 mx:最长回文串的右边界 mid:最长回文串的中心 len[i]:以下标i为中心的回文串长度 j:i以mid为中点的对称下标 算法思想: 从左到右计算以i为中心的最长回文串长度 首先判断mx-i是否小于len[j],是的话,le[i]=len[j],否则说明mid被包含在len[j]的半径之中

Python3字符串内建函数

蓝咒 提交于 2020-01-31 05:37:29
字符串相关 Python转义字符 Python字符串运算符 Python字符串格式化 f-string Python的字符串内建函数 Python转义字符 print ( 'Kobe ' \ 'bryant' ) print ( '100\\' '150' ) print ( "\'" ) print ( 'Kobe\a' 'bryant' ) print ( "A" , "M\b" , "C" ) Python字符串运算符 有关内容前面已经陈述过,不再陈述。 Python字符串格式化 Python支持格式化字符串的输出,尽管这样可能会用到非常复杂的表达式,但 最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中 在Python中,字符串格式化使用与C中的sprintf函数一样的语法 在C中,sprintf:多了一个参数str,并且输出结果式保存在字符数组str中,而不是输出到屏幕,如sprintf(str,“Price is %d”,d); 在Python中这样表示, print("%s is %d" % (‘价格’,999)) 格式化操作符辅助指令: f-string f-string是python3.6之后版本添加到,称为 字面量格式化字符串 ,是新的 格式化字符串 的语法。 之前我们用%,如 f-string格式化字符串以f开头,后面跟着字符串

C++字符串结束标识

安稳与你 提交于 2020-01-31 04:06:22
用一个字符数组可以存放一个字符串中的字符。如: char str[12]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’}; 用一维字符数组str来存放一个字符串″I am happy″中的字符。字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′\0′。为了测定字符串的实际长度,C++规定了一个“字符串结束标志”,以字符′\0′代表。在上面的数组中,第11个字符为′\0′,就表明字符串的有效字符为其前面的10个字符。也就是说,遇到字符′\0′就表示字符串到此结束,由它前面的字符组成字符串。 对一个字符串常量,系统会自动在所有字符的后面加一个′\0′作为结束符。例如字符串″I am happy″共有10个字符,但在内存中它共占11个字节,最后一个字节′\0′是由系统自动加上的。 在程序中往往依靠检测′\0′的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。如果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串的长度。 说明:′\0′只是一个供辨别的标志。 如果用以下语句输出一个字符串: cout<<″ How do you do?″;

如何求C语言字符串长度(strlen函数和sizeof关键字)

放肆的年华 提交于 2020-01-26 04:20:23
C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项。 C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度。 在程序里,一般会用strlen()函数或sizeof来获取一个字符串的长度,但这2种方法获取的字符串的长度其实是不一样,我们用如下函数进行测试: void test6() { char s1[20] = “hello world”; char s2[20] = {‘h’,‘e’,‘l’,‘l’,‘0’,’ ‘,‘w’,‘o’,‘r’,‘l’,‘d’,’\0’}; char s3[] = “hello\0 world”; char s4[] = {‘h’,‘e’,‘l’,‘l’,‘0’,’\0’,’ ‘,‘w’,‘o’,‘r’,‘l’,‘d’,’\0’}; printf("%d\t%d\t%d\t%d\n",strlen(s1),strlen(s2),strlen(s3),strlen(s4)); printf("%d\t%d\t%d\t%d\n",sizeof(s1),sizeof(s2),sizeof(s3),sizeof(s4)); } 注意,该函数里面定义了4个字符串,基本数据都是“hello world",但需要注意的是,字符串s1和s2给定了字符串数组的大小为20,然后使用2种方式进行赋值

1161: 字符串长度(指针专题)

别来无恙 提交于 2020-01-10 19:53:36
题目描述 编写一函数len,求一个字符串的长度,注意该长度不计空格。要求用字符指针实现。在主函数中输入字符串,调用该len函数后输出其长度。 int len(char *sp) { //实现sp所指串的长度,不计空格。 } 输入 输入一个字符串,以回车结束,长度不超过100。 输出 输出一个整数,单独占一行。 样例输入 What day is today? 样例输出 15 # include <stdio.h> int len ( char * sp ) ; int main ( ) { char s [ 81 ] ; char * p = s ; gets ( p ) ; int y ; y = len ( p ) ; printf ( "%d" , y ) ; return 0 ; } int len ( char * sp ) { int i = 0 , n = 0 ; while ( sp [ i ] != '\0' ) { if ( sp [ i ] != ' ' ) { n ++ ; } i ++ ; } return n ; } 来源: CSDN 作者: Dvv啊 链接: https://blog.csdn.net/weixin_46091417/article/details/103927947

6-13 计算最长的字符串长度 (15分)

时间秒杀一切 提交于 2019-12-28 01:45:36
6-13 计算最长的字符串长度 (15分) 本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。 函数接口定义: int max_len( char *s[], int n ); 其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。 裁判测试程序样例: #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXN 10 #define MAXS 20 int max_len( char *s[], int n ); int main() { int i, n; char *string[MAXN] = {NULL}; scanf("%d", &n); for(i = 0; i < n; i++) { string[i] = (char *)malloc(sizeof(char)*MAXS); scanf("%s", string[i]); } printf("%d\n", max_len(string, n)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 4 blue yellow red green 输出样例: 6 作者: C课程组 单位: 浙江大学 时间限制: 400 ms 内存限制: 64 MB int max_len (