用户输入一个字符串到字符数组,原地翻转字符串。即不使用另一个数组,而是在本数组内翻转存储字符串。
时间: 2024-02-29 09:48:02 浏览: 131
以下是一个Python实现的例子,可以原地翻转字符串:
```python
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
```
这个例子使用了双指针的方法,从字符串的两端开始向中间移动,交换左右两侧的字符,直到两个指针相遇为止。这样就可以原地翻转字符串了。
相关问题
. 建立一个字符数组str[100],建立一个函数void input(char *p)从console输入一个字符串到数组中。编写一个递归调用的函数reverse(char *p),将p所指向的字符串翻转。
好的,我了解了你的问题。下面是实现这个功能的代码:
```c
#include <stdio.h>
#include <string.h>
void input(char *p);
void reverse(char *p);
int main()
{
char str[100];
input(str);
printf("Original string: %s\n", str);
reverse(str);
printf("Reversed string: %s\n", str);
return 0;
}
void input(char *p)
{
printf("Please enter a string: ");
scanf("%s", p);
}
void reverse(char *p)
{
int len = strlen(p);
if (len <= 1) return; // 递归终止条件:字符串长度为1或0
char temp = p[0];
p[0] = p[len-1];
p[len-1] = temp;
reverse(p+1); // 递归调用:翻转除了第一个和最后一个字符之外的子串
}
```
代码逻辑如下:
1. 在main函数中定义一个字符数组,并调用input函数从控制台输入一个字符串到数组中。
2. 输出原始字符串。
3. 调用reverse函数翻转字符串。
4. 输出翻转后的字符串。
5. input函数用于从控制台输入字符串到数组中,无需递归。
6. reverse函数用于翻转字符串,是一个递归函数。递归终止条件是字符串长度为1或0,递归调用是翻转除了第一个和最后一个字符之外的子串。
希望这个代码可以帮到你!
使用C++语言实现以下功能“建立一个字符数组str[100],建立一个函数void input(char *p)从console输入一个字符串到数组中。编写一个递归调用的函数reverse(char *p),将p所指向的字符串翻转。”
好的,我很乐意回答你的问题。
以下是用 C++ 实现上述功能的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void input(char *p);
void reverse(char *p);
int main() {
char str[100];
input(str);
reverse(str);
cout << "The reverse string is: " << str << endl;
return 0;
}
void input(char *p) {
cout << "Please enter a string: ";
cin.getline(p, 100);
}
void reverse(char *p) {
static int i = 0, j = strlen(p) - 1;
if (i < j) {
char temp = p[i];
p[i] = p[j];
p[j] = temp;
i++;
j--;
reverse(p);
}
}
```
代码中,`input` 函数用于从控制台输入一个字符串,存储到 `str` 字符数组中。`reverse` 函数使用递归的方式将 `p` 所指向的字符串翻转。具体来说,`reverse` 函数使用两个静态变量 `i` 和 `j` 分别表示字符串的起始位置和结束位置,每次将 `i` 所指向的字符和 `j` 所指向的字符交换位置,然后递归调用 `reverse` 函数处理剩下的子串。当 `i` 大于等于 `j` 时,递归结束,字符串翻转完成。
希望这个代码能够帮助到你。如果你有任何问题或者需要进一步的帮助,请随时问我。
阅读全文