标签: reverse

C 中的就地字符串反转

我正在尝试学习 C 的基础知识,但我无法弄清楚为什么这段代码不起作用。reverse() 中的 while 循环导致总线错误。我在编程面试书中发现几乎相同的代码作为有效的解决方案,但是我在这里看到的这个或其他类似的方法都对我有用,没有总线错误。

#include <stdio.h>

void reverse(char* str) {
 char* end = str;
 char tmp = 0;
 if(str) {
  while(*end) {
   end++;
  }
  --end;
  while(end>str) {
   tmp = *end;
   *end-- = *str;
   *str++ = tmp;
  }
 }
}

int main() {
 char* a = "12";
 puts(a);
 reverse(a);
 puts(a);

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

c string reverse in-place

0
推荐指数
1
解决办法
3495
查看次数

使用递归反转数组内容(C语言)

函数reverseAr()接受两个参数,一个char(ar [])数组和数组(n)的大小,然后反转数组的内容(不使用另一个数组).然后,该函数将通过参数ar将结果返回给调用函数.

我的代码似乎无法运行,我想我错误地传递了函数之间的值,但我无法弄清楚在哪里.

这是代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <string.h> 
#include <math.h> 

void reverseAr(char ar[], int n);

int main()
{
    char str[128];
    int len;

    printf("\nEnter an array of characters: ");
    gets(str);
    len = strlen(str);
    printf("The reversed array of characters is = %s\n", reverseAr(str, len));

    return 0;
}

void reverseAr(char ar[], int n)
{
    char temp = ar[0];
    ar[0] = ar[n - 1];
    ar[n - 1] = temp;
    if (n > 1) 
    {
        reverseAr(++ar, n - 2);
    }
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

Enter …
Run Code Online (Sandbox Code Playgroud)

c arrays recursion reverse

0
推荐指数
1
解决办法
9735
查看次数

反转C++元组

我想颠倒C++元组的内容.我正在尝试在这个答案中建议的以下代码:

template<typename T, size_t... I>
auto
reverse_impl(T&& t, redi::index_sequence<I...>)
-> std::tuple<typename std::tuple_element<sizeof...(I) - 1 - I, T>::type...>
{
    return std::make_tuple(std::get<sizeof...(I) - 1 - I>(std::forward<T>(t));
}

template<typename T>
auto
reverse(T&& t)
-> std::tuple<typename std::tuple_element<N - 1 - I, T>::type...>
{
    return reverse_impl(std::forward<T>(t),
                        redi::make_index_sequence<std::tuple_size<T>::value>());
}
Run Code Online (Sandbox Code Playgroud)

但我从g ++ 4.8.1得到这些错误消息:

foo.cc: In function ‘std::tuple<typename std::tuple_element<((sizeof (I ...) - 1) - I), T>::type ...> reverse_impl(T&&, redi::index_sequence<I ...>)’:
foo.cc:12:76: error: parameter packs not expanded with ‘...’:
   return std::make_tuple(std::get<sizeof...(I) - 1 - I>(std::forward<T>(t)));
                                                                            ^
foo.cc:12:76: …
Run Code Online (Sandbox Code Playgroud)

c++ reverse tuples c++11

0
推荐指数
1
解决办法
870
查看次数

在Python中向后打印列表

我知道有更好的方法可以向后打印东西.但由于某种原因,我不能让这个工作.有什么想法吗?

fruit = 'banana'
index = 0
while index < len(fruit):
    print fruit[-(index)]
    index = index + 1
Run Code Online (Sandbox Code Playgroud)

python printing reverse list

0
推荐指数
1
解决办法
828
查看次数

编写与reverse()函数类似的Python代码

我正在寻找分解reverse()函数并将其写在代码中以供练习。我最终弄清楚了如何做到这一点(向后逐步浏览原始列表并附加到新的“反向”列表),但想知道为什么这不起作用。

def reverse(list):
    newlist = []
    index = 0
    while index < len(list):
        newlist[index] = list[(len(list)) - 1 - index]
        index = index + 1
    return newlist

list = [1, 2, 3, 4, 5]
print(reverse(list))
Run Code Online (Sandbox Code Playgroud)

python reverse list python-3.x

0
推荐指数
1
解决办法
3372
查看次数

翻译句子中的奇数词

我试图扭转句子中的奇怪词.它的工作正常.但它的附加未定义在前面.

var str = "get busy living or get busy dying.";
var newstr = str.split(" "), result;

for(i=0;i<newstr.length;i++){
    if(i%2 !== 0){            
        result += newstr[i].split("").reverse().join("");
        result += ' '; 
    } else {              
        result += newstr[i];
        result += ' ';
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是

   undefinedget ysub living ro get ysub dying.
Run Code Online (Sandbox Code Playgroud)

有人可以指出我哪里出错!!!!!

javascript string reverse

0
推荐指数
1
解决办法
543
查看次数

使用递归方法反转并打印数组

下面的方法工作正常,但我找不到使用相同方法打印反转数组的方法.我尝试了 - 每个循环但它打印三个数组而不仅仅是一个.例如,如果输入:

大小5,开始= 1,结束= 5,arr [] = {1,2,3,4,5}

输出:

543215432154321

应该是正确的输出

54321

这是代码:

static void reverse(int[] arr, int start, int end) {
    if (start < end) {
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        reverse(arr, start + 1, end - 1);       
    }   

    for (int pr : arr) {
        System.out.print(pr);
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays recursion reverse

0
推荐指数
1
解决办法
3594
查看次数

在vanilla javascript中反转多个单词

我有以下列表,并希望颠倒单词的顺序而不是单词中的每个字母.我目前有这个,但它颠倒了每个字母,而不是单词的顺序.

JS:

let items = ["Litte Bike, Tall Tree, Toy Car, Fast Car"].toString();
myArray.split("").reverse().join('')
Run Code Online (Sandbox Code Playgroud)

当前输出:

raC tsaF ,raC yoT ,eerT llaT ,ekiB ettiL
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Bike Litte 
Tree Tall 
Car Toy 
Car Fast 
Run Code Online (Sandbox Code Playgroud)

javascript arrays reverse

0
推荐指数
1
解决办法
57
查看次数

我做错了什么? 反向字符串 C++

所以我想在 c++ 中做最简单的事情,反转一个字符串(存储新字符串)然后打印它

我的代码是:

char a[size] , reverse[size];
strcpy(a,"dlow olleh " );
for (int i = 0 ;  i <= strlen(a); i++) {
   reverse[i]= a[strlen(a)-i];
}
cout << reverse ;
Run Code Online (Sandbox Code Playgroud)

我必须注意,当 cout << reverse[i] ; 在 for 循环中,一切都很好,但是当我想将它打印为字符串时,它只是不这样做,我无法理解我错过了什么 cout << reverse[i] ;

c++ string reverse for-loop c-strings

0
推荐指数
2
解决办法
150
查看次数

std::distance 没有给出预期的输出

std::distance 在 for 循环中返回相同的值,尽管其中一个参数在每个循环中都发生了变化。

#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<int> q{1, 2, 3, 4, 5};
    for (auto i = q.rbegin(); i != q.rend(); i++) {
        static int index_dif = distance(i, q.rend());
        cout << *i << ": " << index_dif << endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

5: 5
4: 5
3: 5
2: 5
1: 5
Run Code Online (Sandbox Code Playgroud)

尽管i每个循环都会增加,所以我希望q.rend()它之间的距离随着循环的进行而缩小,如下所示:

5: 5
4: 4
3: 3
2: 2
1: 1
Run Code Online (Sandbox Code Playgroud)

相反,它似乎给人之间的距离q.rbegin()q.rend() …

c++ reverse for-loop distance stdvector

0
推荐指数
1
解决办法
53
查看次数