python实现:字符串翻转 (C语言实现和C++实现)

版权声明: https://blog.csdn.net/dangzhangjing97/article/details/88568966

问题:给你一串字符串,翻转此字符串,然后并输出结果
例如:字符串为"abcdefg",翻转之后的结果为:“gfedcba”

一、C语言实现

如果是使用C语言实现的话,可以使用指针,给两个指针,一个标记首部,一个标记尾部,对指针进行解引用之后进行交换,这样就可以实现字符串翻转了

char str[] = "abcdefg";
char* beg = str;     //beg标记字符串第一个字符
char* end = str + strlen(str);   //end标记字符串的最后一个字符
//beg和end标记的是地址,由于地址是递增的,所以可以进行比较
while (beg < end) {
 swap(*beg++, *--end);
}

二、C++实现

使用数据结构------栈,因为栈的特性是先进后出,所以我们可以把字符串先进行压栈,然后在进行出栈,这样就可以实现翻转字符串啦

在这里插入图片描述

char str[] = "abcdefg";
Stack stack;
char* p = str;
//入栈
while(p) {
 stack.push(*p++);
}
int index = 0;
//出栈
while(!stack.empty()){
 str[index++] = stack.top();
 stack.pop();
}

三、python实现
使用切片操作符[::]来实现
[::]的特点:

正数的索引以序列的起始位置作为起点,负数的索引以序列的结束位置作为起点

例如:[::1]是以序列的起始位置作为起点,输出整个序列,输出的时候间隔为0,就是说输出整个序列,[::-1]是以序列的结束位置作为起点,输出整个序列,也是输出整个序列,[::2]是以序列的起始位置作为起点,输出整个序列,输出的时候是每隔一个元素输出

切片操作符中两个冒号后面的数字
(1)数字的大小:
     是表明输出的时候是按什么规则输出的,就比如:
        如果是1,那就输出整个序列
        如果是2,那就是输出的时候每间隔一个元素进行输出
        如果是3,那就是输出的时候每间隔2个元素进行输出
(2)数字的正负
        只是表明是以序列的起始位置作为起点,还是以序列的结束位置作为起点,正
      数表明是以序列的起始位置作为起点,负数表明是以序列的结束位置作为起点

在这里插入图片描述

代码实现字符串翻转:

a = "abcdefg"
print a[::-1]

在这里插入图片描述
python的实现简单吧,只需要两行代码就OK啦

猜你喜欢

转载自blog.csdn.net/dangzhangjing97/article/details/88568966
今日推荐