//问题出在哪里?如何解决?
using namespace std;
bool IS(char arr[], int left, int right) {
int up[26] = { 0 };
int low[26] = { 0 };
for (int i = left; i < right; i++) {
if (arr[i] >= 'a'&&arr[i] <= 'z') {
low[arr[i] - 'a'] = 1;
}
else { up[arr[i] - 'A'] = 1; }
}
for (int i = 0; i < 26; i++) {
if (up[i] && low[i] == 1) return true;
}
return false;
}
int main() {
char s[100];
scanf_s("%s", s);
int n = strlen(s);
int left = 0, right = 0, count = 0;
for (int i = 0; i < n-1; i++) {
for (int j = i + 1; j < n; j++) {
if (IS(s, i, j) == true && j - i + 1 > 0) {
left = i;
right = j;
count = j - i + 1;
}
else printf(" ");
}
}
char p;
p = (char)malloc((count + 1)*(sizeof(char)));
int i = 0;
for (i; i < count; i++) {
p[i] = s[left];
left++;
}
p[i] = '\0';
printf("%s", p);
return 0;
}
题目:当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串。比方说,"abABB" 是美好字符串,因为 'A' 和 'a' 同时出现了,且 'B' 和 'b' 也同时出现了。然而,"abA" 不是美好字符串因为 'b' 出现了,而 'B' 没有出现。
给你一个字符串 s ,请你返回 s 最长的 美好子字符串 。如果有多个答案,请你返回 最早 出现的一个。如果不存在美好子字符串,请你返回一个空字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-nice-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。