字符串面试题(一)字符串逆序前端风云志

1. 所有题目全部来自网络,书籍,或者我自己的面试经历,本人只是负责搜集整理。在此对原作者表示感谢!

3. 所有代码都采用C/C++编写

很早就准备写一个字符串系列的面试题,本来已经写好了,大概有十几道题,但是写完才发现,文章好长,连我自己都没有耐心读下去了,索性就将其拆分成几个系列,一来分开后篇幅变小,看起来比较方便。二来也更有针对性,便于精雕细作。比如这篇,在原来的文章中只占很小的篇幅,但是独立出来才发现,东西也不少。既然是第一篇,就来个最最简单的字符串逆序吧。

字符串逆序可以说是最经常考的题目。这是一道入门级的题目,相信80%的程序员经历过这道题。给定一个字符串s,将s中的字符顺序颠倒过来,比如s="abcd",逆序后变成s="dcba"。

基本上没有这么考的,放在这里主要是为了和后面的原地逆序做个对比。很简单,直接分配一个与原字符串等长的字符数组,然后反向拷贝一下即可。

原地逆序

英文叫做in-place reverse。这是最常考的,原地逆序意味着不允额外分配空间,主要有以下几种方法,思想都差不多,就是将字符串两边的字符逐个交换,如下图。给定字符串"abcdef",逆序的过程分别是交换字符a和f,交换字符b和e,交换字符c和d。

一 设置两个指针,分别指向字符串的头部和尾部,然后交换两个指针所指的字符,并向中间移动指针直到交叉。

二 用递归的方式,需要给定逆序的区间,调用方法:Reverse(s, 0, strlen(s)) ;

三 非递归法,同样指定逆序区间,和方法一没有本质区别,一个使用指针,一个使用下标。

给定一个字符串,按单词将该字符串逆序,比如给定"This is a sentence",则输出是"sentence a is This",为了简化问题,字符串中不包含标点符号。

分两步

1 先按单词逆序得到"sihT si a ecnetnes"

2 再整个句子逆序得到"sentence a is This"

对于步骤一,关键是如何确定单词,这里以空格为单词的分界。当找到一个单词后,就可以使用上面讲过的方法将这个单词进行逆序,当所有的单词都逆序以后,将整个句子看做一个整体(即一个大的包含空格的单词)再逆序一次即可,如下图所示,第一行是原始字符换,第二行是按单词逆序后的字符串,最后一行是按整个句子逆序后的字符串。

代码

还有一类题目是要求逆序输出,而不要求真正的逆序存储。这题很简单,有下面几种方法,有的方法效率不高,这里仅是提供一个思路而已。

先求出字符串长度,然后反向遍历即可。

如果不想求字符串的长度,可以先遍历到末尾,然后在遍历回来,这要借助字符串的结束符'\0

THE END
0.leetcode打卡8给定某一字符串s,对其中的每一字符c进行大小写转换给定一个字符串s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合。以 任意顺序 返回输出。 示例1: 输入:s = “a1b2” 输出:[“a1b2”, “a1B2”, “A1b2”, “A1B2”] 示例2: 输入: s = “3z4” 输出: [“3z4”,“3Z4”] 提示jvzquC41dnuh0lxfp0tfv8|wdgoiwjs|kvgj1jwvkerf1mjvckrt1:797;>7;:
1.python3第四章课后习题答案(1)下面程序的功能是什么? (2)以下程序的输出结果是什么? (3)下面程序的输出结果是什么? 4.编程题 (1)给定某一字符串s,对其中的每一字符c进行大小写转换:如果c是大写字母,将它转换成小写字母;如果c是小写字母,则将它转换成大写字母;如果不是字母,则不进行转换。 jvzquC41dnuh0lxfp0tfv8]LS3619:<1ctzjeuj1fgzbkux135=52<;2:
2.给定某一字符串s,对其中的每一字符c大小写转换:如果c是大写字母,则将搜标题 搜题干 搜选项 搜索 问答题 给定某一字符串s,对其中的每一 字符c大小写转换:如果c是大写字母,则将它转换 成小写字母;如果c是小写字母,则将它转换成大写字母;如果c不是字母,则不转换 答案:s=" abc32TT9ac" t="" for i in range (len(s)) : if s[i] .islojvzquC41yy}/rypcq0ipo8|cpiqf1mfcp1g85n986gj7:m974h>:9Bg434?7dAi;de
3.PTPressPython3程序设计2版刘德山参考答案.docx3.编程题(1)给定某一字符串s,对其中的每一字符c大小写转换:如果c是大写字母,则将它转换成小写字母;如果c是小写字母,则将它转换成大写字母;如果c不是字母,则不转换。 s=abc32TT9ac t= for i in range(len(s)): if s[i].islower(): t+=s[i].upper() elif s[i].isupper(): t+=s[i].jvzquC41oc~/dxtm33>/exr1jvsm1;5441652@4938718?6622653:50ujzn
4.给定某一字符串s,对其中的每一字符c进行大小写转换:如果c是大写本文介绍了一种使用Python实现的字符串中每个字符的大小写转换方法。对于字符串中的每个字符,如果是大写字母,则转换为小写;如果是小写字母,则转换为大写;如果不是字母,则保持不变。 给定某-字符串s,对其中的每一字符c进行大小写转换:如果c是大写字母,则将它 jvzquC41dnuh0lxfp0tfv8|gkzooa=:;6;6858ftvkimg8igvcomu86275>9;=<
5.给定某一字符串s,对其中的每一字符c进行大小写转换给定字符串,实现大小写之间的转换 本文介绍三种在Java中实现字符串大小写转换的方法:利用内置函数、字符数组遍历及Unicode编码差值法。每种方法均附带示例代码。 方式一、字符串之间的大小写转换toLowerCase与toUpperCase,char与String之间的转换。StringBuffer与String之间的转换。适合练习 imjvzquC41dnuh0lxfp0tfv8hu62>0c{ykenk0fnyckny06A<745881
6.C/C++基础知识——字符串(三)C/C++基础知识——字符串(二)https://developer.aliyun.com/article/1437435 14.最长单词 知识点:s.back()与s.pop_back();的用法 一个以.结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。 输入格式 输入一行字符串,表示这个简单英文句子,长度不超过 500。 jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1:959697
7.字符串面试题精讲规则判断:字符串是否符合某个规则 如整数规则,浮点数规则,回文字符串规则; 数字运算 字符串拼大整数的方式实现加减乘除运算,模拟笔算过程。 与数组操作相关的类型 (1)数组有关的调整,排序等操作 (2)快排的改写等 字符计数 c/c++中字符的ASCII码范围0-255,java中0-65535 jvzquC41dnuh0lxfp0tfv8iqa{uvt|jnhampaxs1ctzjeuj1fgzbkux197?39:97
8.数据结构与C语言笔试题解析C)5 D)输出项不合法,无正常输出 答案:C 评析:在c语言中,以“\”开头的字符均为转义字符,其中“\”后可跟l~3位八进制数或在“\”后跟字母x及l~2位十六进制数,以此来代表一个特定的字符。 (17)下列程序的输出结果是___。 main() { int jvzquC41dnuh0lxfp0tfv8ncoarbkw4ctvodnn4fgvgjn|46;2626@:
9.C语言编程基础与实践10.查找 ASCII 码表,分别用%d 输出字符,用%c 输出整数。 第二讲:分支结构 练习1. (1).控制台输入一个字符,如果输入的是m,则输出男性,否则什么都不输出。 (2).如果从控制台输入一个字符,如果输入的是m,则输出男性,否则输出女性,那怎么实现呢? 【if语句】 jvzquC41dnuh0lxfp0tfv8OZV3:22:9a37633=4ctvodnn4fgvgjn|465;97;B<