输入一个字符串,然后将其逆序输出,例如:输入abc,输出cba(用指针实现)。
时间: 2024-11-16 10:20:30 浏览: 7
在编程中,使用指针来实现字符串反转是一种常见的技巧。你可以创建两个指针,一个指向字符串的开始位置(通常称为`start`),另一个指向结束位置(`end`)。然后,交换这两个指针所指向的字符,每次移动`start`向前一位,`end`向后一位,直到它们相遇。这里是一个简单的Python示例,使用了切片而不是直接操作指针:
```python
def reverse_string(s):
return s[::-1]
# 使用例子
input_str = "abc"
reversed_str = reverse_string(input_str)
print("逆序后的字符串:", reversed_str)
# 如果要用指针(这里是模拟,因为Python中没有原生指针)
def reverse_string_ptr(s):
start = 0
end = len(s) - 1
# 模拟指针操作
while start < end:
s[start], s[end] = s[end], s[start]
start += 1
end -= 1
return ''.join(s)
```
相关问题
下面程序中的函数void conv(char *s);将字符串s中的所有字符逆序存放,例如s中为”abc”时,调用该函数后s中的字符串变为”cba”,完成该函数
在C语言中,你可以通过两个指针,一个指向字符串的开始,另一个指向结束,然后交换它们指向的字符,逐次向中间移动,直到相遇。下面是一个简单的实现这个功能的`conv`函数:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,注意函数名前无返回值类型
void conv(char* s);
// 函数体
void conv(char* s) {
if (s == NULL || strlen(s) < 2) { // 检查字符串是否为空或只包含一个字符
return;
}
char* start = s; // 初始化起始指针
char* end = s + strlen(s) - 1; // 初始化结束指针
while (start < end) { // 当起始指针小于结束指针
char temp = *start; // 临时保存起始位置的字符
*start = *end; // 将起始位置的字符置为结束位置的字符
*end = temp; // 将结束位置的字符置为临时保存的字符
start++; // 起始指针后移
end--; // 结束指针前移
}
}
int main() {
char str[] = "abc";
conv(str);
printf("Reversed string: %s\n", str); // 输出验证结果
return 0;
}
```
在这个例子中,`conv`函数会逆序传入的字符串`s`。
试构造一算法,识别依次读入的一个以#’为结束符的字符序列是否形如“序列 1&序列 2”模式的字符序列。其中序列1和序列2中不含字符‘#’,且序列2是序列1的逆序列。例如,“abc#cba”是属于该模式的字符序列。
可以设计一个简单的算法来判断输入的字符序列是否符合 "序列 1&序列 2" 的模式:
1. 初始化两个指针,`i` 和 `j` 分别指向序列的开始和倒数第二个位置。
2. 创建一个临时字符串 `temp` 来存储当前检查的子串。
3. 当遇到第一个 '#' 符号时,停止读取并跳过。如果没有找到 '#',则返回 false,因为这不是一个有效的模式。
4. 循环遍历剩余的字符直到遇到第二个 '#' 或者 `i` 和 `j` 相遇:
a. 如果 `i` 小于 `j`,将 `temp` 设置为从当前 `i` 开始到 `j` 结束的子串,并检查它是否等于 `temp` 反转后的结果。如果不等,则返回 false。
b. 移动指针 `i` 向右一位,`j` 向左一位。
5. 如果整个循环完成后都满足条件(即所有子串都是彼此的逆序),返回 true。
下面是伪代码形式:
```python
def is_pattern(s):
i = 0
j = s.find('#', 1) - 1
temp = ''
while i < j:
if s[i] != s[j]:
return False
temp += s[i]
i += 1
j -= 1
if i == j and temp[::-1] == temp:
return True
else:
return False
s = input("请输入字符序列: ")
if is_pattern(s):
print("字符序列符合模式")
else:
print("字符序列不符合模式")
```
阅读全文