程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話左扭轉字符串與翻轉字符串中單詞次序的辦法

C說話左扭轉字符串與翻轉字符串中單詞次序的辦法

編輯:關於C++

C說話左扭轉字符串與翻轉字符串中單詞次序的辦法。本站提示廣大學習愛好者:(C說話左扭轉字符串與翻轉字符串中單詞次序的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話左扭轉字符串與翻轉字符串中單詞次序的辦法正文


左扭轉字符串
標題:

界說字符串的左扭轉操作:把字符串後面的若干個字符挪動到字符串的尾部。

如把字符串 abcdef  左扭轉 2  位獲得字符串 cdefab。請完成字符串左扭轉的函數。

請求時光對長度為 n  的字符串操作的龐雜度為 O(n),幫助內存為 O(1)。

剖析:

網上看到解法許多種,就不具體解釋了。

我采取的是數組纰謬稱的交流時光龐雜度應當是O(n)。

代碼完成(GCC編譯經由過程):

#include "stdio.h"
#include "stdlib.h"
 
void reverse_str(char str[],int n,int m);
 
int main(void)
{
  char str[] = "abcdef";
  reverse_str(str,6,2);
  return 0;
}
 
//str為字符串數組,n為數組長度,m為左移位數
void reverse_str(char str[],int n,int m)
{
  int i,j;
  char tmp; 
     
  for(i=0,j=n-1;i<j;i++,j--)
  {
    tmp = str[i];
    str[i] = str[j];
    str[j] = tmp;
  }
 
  for(i=0,j=n-m-1;i<j;i++,j--)
  {
    tmp = str[i];
    str[i] = str[j];
    str[j] = tmp;
  }
 
  for(i=n-m,j=n-1;i<j;i++,j--)
  {
    tmp = str[i];
    str[i] = str[j];
    str[j] = tmp;
  }
 
  printf("%s\n",str);
}


翻轉句子中單詞次序
翻轉句子中單詞的次序。

標題:

輸出一個英詞句子,翻轉句子中單詞的次序,但單詞內字符的次序不變。

句子中單詞以空格符離隔。為簡略起見,標點符號和通俗字母一樣處置。

例如輸出“I am a student.”,則輸入“student. a am I”。

這個題比擬簡略,直接上代碼了(GCC編譯經由過程)

代碼完成:

#include "stdio.h"
#include "stdlib.h"
 
void helper(char a[],int n);
 
int main(void)
{
  char str[15] = "I am a student!";
  helper(str,15);
  printf("\n");
  return 0;
}
 
void helper(char a[],int n)
{
  int e = n-1;
  int i,j,t;
   
  for(i=e;i>=0;i=j-1)
  {
    for(j=i;j>=0 && a[j]!=' ' ;--j);
    t=j+1;
    while(t<=i)
      printf("%c",a[t++]);
    if(j<0)
      return;
    else  
      printf(" ");
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved