牛客网—倒置字符串(注释超详解) i like beijing.

简介: 牛客网—倒置字符串(注释超详解) i like beijing.


大家先看看这道题目的描述:

 通过这一道题,我想写一点自己对自己初次学习指针的心得看法,这个指针系列我还是会继续更新的,毕竟人都是经历了才会成长,那学习了才会提升对吧(如果这里我理解指针有错误大家可以给我批评指正,因为我需要学习! )

 1.指针可以取出数组的第一个元素的地址从而可以达到遍历数组的作用.

      

我还是喜欢写题的时候先想思路:

1)观察i like beijing. 发现我可以通过下面的操作把这句话给它弄成我需要的内容.

其实很简单:

第1步一> i ekil .gnijieb  其实变成这样就是为了让一句话全部转置对吧?

第2步—> beijing. like i 其实说白了就是每一个单词的转置对吧?

第3步—> 打印啦.

2)为了初学者能够理解我的思路,下面我会注释加分割.

include<stdio.h>

include<string.h>

void revers(char left,char right)
{

//下面这个方法就是 1 2 3  4 5
//5 与 1交换然后 依次交换  直到left==right 这不跳出while 循环了嘛,所以拿这个例子你去理解下面这个 代码 
//
while(left<right)
{
    char temp=*right;
    *right=*left;
    *left=temp;
    left++;
    right--;
}
//看完这个咱还回去哈..

}
//这里先打出c语言主函数部分并且注释学习.
int main()
{

char arr[100];
//gets函数去输入.  小技巧:gets一次输入一行代码. getchar一次输入一个字符
gets(arr);
char* cur=arr;    
//这里 用指针cur加* 去取走数组arr的第一个地址.
while(*cur)
{
    char* start = cur;
    char* end = cur;
    //这样定义start 是保存初地址,也可以理解为第一个元素的下标.
    //end 是为了遍历我的字符串对吧?目的也就是找独立的单词.
    while(*end!=' ' && *end!='\0')
    {
        end++;
    }
    //定义一个函数然后作用是为了单词转置,把俩地址传过去.好,我们去瞅瞅定义的函数吧.  向上 
    //看吧
    revers(start,end-1);
    //
    if(*end!='\0')
    {
        cur=end+1;
    }
    else
    {
        cur=end;
    }
    //为下一个单词做准备
}    
//打印出去
int len=strlen(arr);
revers(arr,arr+len-1);
printf("%s",arr); 
return 0;

}
下面来试试先全部转置再单词转置.

上面是先转置单词再全部转置.

我本人建议自己先学第一种方法然后自己去学我给你这种思路的代码,非常相似,所以自己敲敲锻炼一下自己对于指针的使用.

include<stdio.h>

include<string.h>

void reverse(char left,char right)
{

while(left<right)
{
    char temp=*left;
    *left=*right;
    *right=temp;
    left++;
    right--;
}

}
int main()
{

char arr[101];
gets(arr);
int len=strlen(arr);
reverse(arr, arr+len-1);
//每个单词的逆序.
char* cur=arr;
while(*cur)
{
    char* start=cur;
    char* end=cur;
    while(*end!=' ' && *end!='\0')
    {
        end++;
    }
    reverse(start,end-1);
    if(*end!='\0')
    {
        cur=end+1;
    }
    else
    {
        cur=end;
    }
} 
printf("%s",arr);
return 0;

}
蟹蟹你完我的文章,希望爱学习编程的一起进步一起学习,编程路漫漫,蟹蟹有你们相伴(虽然现在没啥人哈哈).

相关文章
|
存储 缓存 Android开发
android分区概述
android分区概述
658 0
|
存储 Linux Shell
深度剖析 Linux cp 命令的秘密
用 cp 拷贝了一个 100 GiB 的文件,竟然一秒不到就拷贝完成了。一个 SATA 机械盘的写能力能到 150 MiB/s (大部分的机械盘都是到不了这个值的)就算非常不错了,所以,正常情况下,copy 一个 100G 的文件至少要 682 秒 ( 100 GiB/ 150 MiB/s ),也就是 11 分钟。
1323 0
|
编解码 Linux Android开发
安卓投屏神器 Scrcpy 安装与使用(支持 Mac、Windows、Linux)
安卓投屏神器 Scrcpy 安装与使用(支持 Mac、Windows、Linux)
36895 1
|
存储
第一个只出现一次的字符(OJ题)
第一个只出现一次的字符(OJ题)
83 0
|
索引
【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符
目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符
84 0
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
131 0
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
1440 1
|
虚拟化 iOS开发 Docker
虚拟文件系统之争:VirtioFS、gRPC FUSE、osxfs (Legacy)大比拼
虚拟文件系统之争:VirtioFS、gRPC FUSE、osxfs (Legacy)大比拼
619 1
|
Java C++ Python
leetcode-1002:查找常用字符
leetcode-1002:查找常用字符
96 1
|
存储 固态存储 芯片
计算机组成原理<五>——存储系统(一)
计算机组成原理<五>——存储系统
计算机组成原理<五>——存储系统(一)

热门文章

最新文章