`
itjavagoodqq
  • 浏览: 39805 次
文章分类
社区版块
存档分类
最新评论

面试字符串处理之单词翻转

阅读更多

   
<p align="left">分析:第一步,将字符串完全倒置,即".gnijnan morf emoc i"

<p align="left">实现一:

<p align="left">#include <string.h><br>
#include <stdlib.h><br>
char * convert (char* pure)<br>
{<br><br><br>
char *temp=(char *)malloc(strlen(pure)+1);<br>
int i=0;<br>
int j=strlen(pure);<br>
int pre=0;<br>
int k=0;<br>
temp[j]='\0';<br>
for (i=0;i<strlen(pure);i++)<br>
{<br>
temp[--j]=pure[i];//字符串反转<br>
}<br>
for(i=0;i<strlen(temp);i++)<br>
{<br>
if(temp[i]==' ')<br>
{<br>
k=i;<br>
for(j=pre;j<i;j++)<br>
pure[j]=temp[--k];<br>
pure[j]=' ';<br>
pre=i+1;<br>
}<br>
if(i==(strlen(temp)-1))<br>
{<br>
k=i;<br>
for(j=pre;j<=i;j++)<br>
pure[j]=temp[k--];<br>
}<br>
}<br>
return pure;<br>
}<br>
int main(int argc, char* argv[])<br>
{<br>
char a[]="am loving you baby";<br>
convert(a);<br>
printf("%s\n",a);<br>
return 0;

<p align="left">实现二:(较为清楚的实现)

#include <string.h><br>
void strReverse(char *str,int n)<br>
{<br>
int i = 0;<br>
int j = 0;<br>
int begin;<br>
int end;<br>
char temp;<br><br>
//...............第一步:整体倒置......................//<br>
j = n-1;<br>
while (j>i)<br>
{<br>
temp = str[i];<br>
str[i] = str[j];<br>
str[j] = temp;<br>
i++;<br>
j--;<br>
}<br>
printf("after reversing wholly string = %s\n",str);<br>
//...............第二步:按单词部分倒置......................//<br>
i = 0;<br>
while (str[i]!='\0')<br>
{<br>
if (str[i]!=' ')<br>
{<br>
begin = i;<br>
while ((str[i]!='\0') &amp;&amp; (str[i]!=' '))<br>
{<br>
i++;<br>
}<br>
i = i-1;<br>
end = i;<br>
}<br>
while (begin<end)<br>
{<br>
temp = str[begin];<br>
str[begin] = str[end];<br>
str[end] = temp;<br>
begin++;<br>
end--;<br>
}<br>
i++;<br>
}<br>
}<br>
int main()<br>
{<br><br>
char str[] = "i come from nanjing.";<br>
int j = 0;<br><br>
j = strlen(str);<br>
printf(" string = %s\n",str);<br>
strReverse(str,j);<br>
printf(" string = %s\n",str);<br>
return 0;<br>
}


 
0
0
分享到:
评论

相关推荐

    输入一个英文句子,翻转句子中单词的顺序

    对于应聘者来说,掌握字符串相关的算法和技巧是必不可少的能力之一。微软作为全球知名的科技公司,在其面试过程中常常会考察应聘者的逻辑思维能力和对基本数据结构的理解程度。 题目描述:本题要求实现的功能是...

    LeetCode笔记-翻转字符串里的单词

    通过一行代码实现这个问题,我们可以结合`strip()`、`split()`、`[::-1]`(反向切片)和`join()`操作,一次性完成翻转单词、处理多余空格和合并字符串的操作。 **复杂度分析:** 与方法二相同。 ```python class ...

    java以单词的维度反转字符串(中间的空格不确定,并不可以缺少)

    这个解决方案充分利用了Java的字符串处理能力和数据结构,实现了对字符串的单词维度反转,同时也确保了空格数量的正确保留。这种问题解决方式不仅适用于面试,也对日常的编程工作有着重要的实践价值,它展示了如何...

    《代码随想录》字符串算法精华汇总

    本文基于《代码随想录》,围绕着字符串相关的知识点深入探讨,详细解析了一系列经典的字符串操作问题及其对应的解题思路与代码实现,覆盖字符串反转、替换空格、单词翻转及KMP模式匹配等多个重点主题。此外,还阐述...

    剑指Offer(Python多种思路实现):翻转字符串

    剑指Offer(Python多种思路实现):翻转字符串 面试58题: 题目:翻转字符串 题:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来...

    C++代码(回文单词,数据结构等)

    在给定的"C++代码(回文单词,数据结构等)"压缩包中,我们可以预见到包含了一系列关于C++编程的实践项目,涉及到的核心知识点主要包括回文字符串处理、电话号码管理、图书馆管理以及数据结构的实现。下面将对这些...

    前端大厂最新面试题-trie.docx

    4. **字符串的索引对**:给定一个字符串数组,找出所有满足索引对 (i, j) 使得 s[i] 和 s[j] 是彼此的翻转(回文对)。Trie 可以用来高效地检查字符串是否为回文。 5. **最长单词**:在给定的单词列表中,找出最长...

    前端大厂最新面试题-backtracking.docx

    III、第k个排列、优美的排列、翻转游戏 II、N皇后 II、子集 II、全排列 II、黄金矿工、组合总和 II、将数组拆分成斐波那契序列、活字印刷、计算各个位数不同的数字个数、二进制手表、格雷编码、串联字符串的最大长度...

    Assignment.rar

    在Java中,字符串是不可变的,因此翻转字符串通常需要创建新的字符串对象或者使用StringBuilder或StringBuffer类。这可能涉及到字符串的基本操作、字符数组以及字符串比较。 3. **BracketsPaired.java**:此文件...

    刀疤鸭之数据结构面试题

    这个问题实际上是一个字符串处理问题,可以通过先分割字符串然后反转整个句子的方式来解决。 8. 判断整数序列是否为二元查找树的后序遍历结果: 这个问题考察了对于二元查找树遍历的理解,需要根据后序遍历的特性...

    Coding Interview in Java

    5. 字符串处理问题:例如Candy(糖果)、Trapping Rain Water(接雨水)、Reverse Words in a String II(翻转字符串中的单词)等,考察候选人对字符串操作的熟练度。 6. 动态规划问题:如Minimum Size Subarray ...

    程序员面试题目40道

    - 其他字符串和数组操作题目的解决方案通常涉及字符串处理、排序、哈希表等数据结构,具体方法取决于题目的具体要求,如字符串翻转、单词翻转、查找子串等。 这些题目覆盖了算法、数据结构和逻辑思维等多个方面,...

    程序员面试之无敌天书

    - **解决方案**:可以先遍历字符串统计每个字符出现的次数,然后再遍历一遍字符串,找到第一个出现次数为1的字符。 **14. 约瑟夫环问题** - **问题描述**:给定n个编号为0到n-1的人围成一圈,从编号0的人开始报数...

    各大IT公司经典面试题

    可以先将整个字符串翻转一次,然后逐个翻转每个单词。这样可以有效地避免额外的空间开销。 #### 11. 有序链表的合并 题目要求将两个有序链表合并为一个有序链表。 **解决方案**: 可以通过迭代或递归的方式来实现...

    程序员面试精选

    - **知识点**: 字符串操作、单词分割。 - **应用场景**: 给定一个英文句子,翻转句子中单词的顺序,但单词内部的字母顺序不变。 ### 8. 求1+2++n - **知识点**: 数学公式、循环控制。 - **应用场景**: 使用循环或...

    程序员面试题精选100题.doc

    - **实现步骤**:使用字符串操作函数将句子分割成单词列表,然后逐个翻转每个单词。 - **特殊情况处理**:考虑到句子中可能存在多个空格的情况,需要先去除多余的空格。 ### 8. 求1+2++n - **公式推导**:这是一个...

    微软等公司数据结构+算法面试第1-80题汇总

    - 句子单词翻转可使用栈,将单词入栈,然后依次弹出。 - 子字符串查找可以使用滑动窗口或Boyer-Moore算法。 - 比较两个字符串的O(n)时间复杂度比较可直接逐字符比较。 - 找出1001数组中重复数字,可以使用异或...

    世界五百强面试经典教材

    7. **翻转句子中单词的顺序**:这个任务涉及到字符串处理,可以使用双指针技术,从单词末尾开始向前翻转,然后翻转整个句子。 8. **判断序列是否为二元查找树后序遍历**:对于这类问题,需要理解二元查找树的后序...

Global site tag (gtag.js) - Google Analytics