java 字符串掐头去尾_JAVA练习题,编写一程序输出一个字符串中的所有回文串,求大神解答~...

#include void outputString(char*, int);

char* partString(char*, int, int);

char* revString(char*, int);

bool isReversible(char*, int);

bool strEqual(char*, char*, int);

int main() {

using namespace std;

char* str;

cout << "Confirm the length of the string : ";

int len = 0;

cin >> len;

if(len <= 0) return 0;

cout << endl << "The string please =O= : ";

str = new char[len + 1];

cin.get();

cin.getline(str, len);

cout << endl << "The String : " << str;

cout << endl << "Now outputting ... " << endl;

outputString(str, strlen(str));

cout << endl << "Done, press any key to quit..." << endl;

system("pause");

}

void outputString(char* str, int len) {

for(int i = 2; i < len - 1; i++) {

for(int j = 0; j < len - i; j++) {

char* str2 = partString(str, j, i);

if(isReversible(str2, i))

std::cout << str2 << std::endl;

delete[] str2;

}

}

}

char* partString(char* str, int index, int len) {

char* str2 = new char[len + 1];

for(int i = index; i < index + len; i++)

str2[i - index] = str[i];

str2[len] = '\0';

return str2;

}

bool isReversible(char* str, int len) { //确认一个字符串是否是回文串。

char *str1, *str2;

if(len % 2 == 0) {

str1 = partString(str, 0, len/2);

str2 = revString(partString(str, len/2, len/2), len/2);

} else {

str1 = partString(str, 0, len/2);

str2 = revString(partString(str, len/2 + 1, len/2), len/2);

}

bool b = strEqual(str1, str2, len/2);

delete[] str1, str2;

return b;

}

char* revString(char* str, int len) { //返回一个前后颠倒的字符串。

char* str2 = new char[len + 1];

for(int i = 0; i < len; i++) {

str2[len - i - 1] = str[i];

}

str2[len] = '\0';

return str2;

}

bool strEqual(char* str1, char* str2, int len) { //确认两个字符串是否相等。

for(int i = 0; i < len; i++)

if(str1[i] != str2[i]) return false;

return true;

}

表示要改写成java难度应该不大 咱写的那么认真还测试编译通过了就采纳了吧~QwQ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值