假设串采用顺序串储存,设计一个算法Strcmp(s,t)按字典顺序比较两个串s和t的大小
时间: 2024-12-12 12:26:33 浏览: 5
在按照字典序比较两个字符串`s`和`t`时,可以使用逐字符比较的方法,直到遇到第一个不同的字符。如果`s`的字符先于`t`的字符出现在字母表中,则`s`小于`t`;反之则`t`大于`s`;若两者都已遍历完且所有字符都相同,则字符串相等。
以下是基本的算法步骤:
1. 初始化两个指针i和j分别指向`s`和`t`的起始位置。
2. 当`i`和`j`都在各自的字符串范围内时,进行循环:
a. 比较`s[i]`和`t[j]`的ASCII值。
b. 如果`s[i]`小于`t[j]`,返回 `-1` 表示`s`小于`t`。
c. 如果`s[i]`大于`t[j]`,返回 `1` 表示`t`小于`s`。
d. 若它们相等,则同时将`i`和`j`递增一位。
3. 如果遍历完整个`s`但`t`还有剩余字符,说明`t`较长,返回 `0` 表示`t`大于等于`s`。
4. 同理,如果遍历完整个`t`但`s`还有剩余,返回 `-1` 或 `1`,取决于`s`是否比`t`长。
这是Python中的伪代码版本:
```python
def Strcmp(s, t):
for i in range(min(len(s), len(t))):
if s[i] < t[i]:
return -1
elif s[i] > t[i]:
return 1
if len(s) < len(t):
return -1
elif len(s) > len(t):
return 1
else:
return 0
```
阅读全文