将给定字符串缩写,用长度替换所有字符,但首尾字符除外
在这个问题中,我们需要将长度大于2的字符串转换为其缩写形式。我们可以使用字符串的“length”属性来计算字符串中中间字符的总数,并可以使用各自的索引值来获取首尾字符。
问题陈述− 我们给定了一个长度大于等于2的字符串str,需要将其转换为缩写形式。
字符串的缩写形式如下所示:首字符 + 中间字符总数 + 尾字符。
示例
输入
str = ‘abcdefg’
输出
a5g
说明− ‘a’是首字符,‘g’是尾字符,它们之间共有5个字符。
输入
str = ‘tutorialspoint’
输出
t12t
说明− 这里,首尾字符都是‘t’,中间字符总数为12。
输入
str = ‘ab’
输出
a0b
说明− 这里,中间字符总数为0,因此结果字符串为a0b。
方法1
在这种方法中,我们将遍历字符串以查找字符串的长度。之后,我们将访问字符串的首尾字符以创建其缩写。
算法
步骤1− 定义变量‘size’并初始化为0,用于存储给定字符串中的字符总数。
步骤2− 使用循环遍历字符串,直到我们得到‘\0’作为当前字符。
步骤3− 打印字符串的首字符。
步骤4− 打印size − 2。
步骤5− 使用‘size − 1’索引打印字符串的尾字符。
示例
#include <iostream>
using namespace std;
void abbreviateWord(string alpha){
int size = 0;
// counting total characters
while (alpha[size] != '\0')
size++;
// first char
cout << alpha[0];
// tota middle characters
cout << size - 2;
// last char
cout << alpha[size - 1];
}
int main(){
string str = "abcdefghi";
abbreviateWord(str);
return 0;
}
输出
a7i
时间复杂度− O(N),因为我们遍历字符串以计算字符串中的字符总数。
空间复杂度− O(1),因为我们不使用额外的空间。
方法2
在这种方法中,我们将使用C++中字符串的size()方法来获取字符串的长度。
算法
步骤1− 使用size()方法获取字符串的长度,并用变量‘len’存储。
步骤2− 使用索引‘0’访问字符串的首字符并打印。
步骤3− 打印‘len − 2’。
步骤4− 打印字符串的尾字符。
示例
#include <iostream>
using namespace std;
void abbreviateWord(string alpha) {
// get the string length
int len = alpha.size();
// 1st char
cout << alpha[0];
// print len - 2
cout << len - 2;
// last char
cout << alpha[len - 1];
}
int main() {
string str = "tutorialspoint";
abbreviateWord(str);
return 0;
}
输出
t12t
时间复杂度− O(N),因为我们使用了size()方法。
空间复杂度− O(1),因为我们没有使用动态空间。
结论
在本教程中,我们学习了使用两种方法打印字符串的缩写。在第一种方法中,我们使用循环来计算字符串中的字符总数,在第二种方法中,我们使用了size()方法。但是,程序员也可以使用length()方法。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP