将一个字符串逆序排列

2024-09-01 19:18
文章标签 字符串 排列 逆序

本文主要是介绍将一个字符串逆序排列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



将一个字符串逆序排列:原地转换

#include <stdio.h>
int count(char * s)
{
     int n = 0;
     while(*s++ != '\0')
     n++;

     printf("n = %d\n",n);
     return n;
}

void conver(char * s,int n)
{
     int i,j;
 for(i = 0; i < n;i++,n--)
 {
      if(i != n)
     {
         j = s[i];
         s[i] = s[n-1];//减一的原因是:数组下标从0开始
         s[n-1] = j;
     }
 }

}


void main()
{
    int i;
    char shuzu[] = "welcome to!";

    printf("strlen(shuzu) = %d\n",strlen(shuzu));
    printf("sizeof(shuzu) = %d\n",sizeof(shuzu));//比较下strlen和sizeof区别
    i = count(shuzu);
    conver(shuzu,i);
    printf("after the conver,the string is:%s\n",shuzu);
 
}

另一种转换方法:指针

#include <stdio.h>
char* reverse(char* s)
{
     char*  t; 头
     char* w;尾
     t = s;
     w = s;
    while(*w++ != '\0'); 这和while(*w++)一样  //while(*w != '\0') 两种方法,自己体会
    w--;                                                               // w++; 
    w--;                                                              // w--;
 while(w>t)
 {
     int temp;
     temp = *t;
    *t++ = *w;
    *w-- = temp;
 }
   return s;


}


void main()
{
    char str[]="hello!";
    reverse(str);
    printf("after the reverse,the string is : %s\n",str);

}


将一句字符逆序:
#include <stdio.h>
void exchange(char* t,char* w)
{
     while(w>t)
    {
        int temp;
        temp = *t;
        *t++ = *w;
        *w-- = temp;
    }
}
void reverse(char* s)
{
     char* p;
     char* q;
     p = s;
     q = s;
    while(*q != '\0')
    {
        if(*q == ' ')
       {
           exchange(p,q-1);
           q++;
           p=q;
      }
      else
           q++;
 }
      exchange(p,q-1);
      exchange(s,q-1);
}
void main()
{
     char str[] = "welcome to china !";
     reverse(str);
     printf("the string is %s\n",str);
}


这篇关于将一个字符串逆序排列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127808

相关文章

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

回溯——9.全排列

力扣题目链接 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解题思路 问题建模:题目要求给出一个数组的所有排列组合,属于典型的全排列问题,这可以用回溯法来解决。回溯法通过递归的方式,依次将数组中的每个元素放入排列中,直到生成