
#给你一个下标从 0 开始且长度为n(n≤1000) 的整数数组 colors,其中 colors[i]表示第 i 个点的颜色。返回两个不同颜色点的最大距离。第 i个点和第 j 个点之间的距离是 abs(i−j) ,其中 abs(x)是x的绝对值。
int maxDistance(int *colors,int colorSize){
int i,j;
int maxi=0;
for(i=0;imaxi){
maxi=abs(i-j);
}
}
}
}
return maxi;
}
#给你一个下标从 0 开始且长度为 n(n≤100000) 的整数数组 colors,其中 colors[i]表示第 i 个点的颜色。返回两个不同颜色点的最大距离。第 i 个点和第 j 个点之间的距离是abs(i−j) ,其中 abs(x)是 x 的绝对值
int maxDistance(int* colors, int colorsSize){
int max=0;
int l=0,r=colorsSize-1;
while(lmax)max=l-r;
return max;
}
#要求实现一个函数,传参为一个字符串,只包含'(',')','{','}','[',']'这些字符,判断字符串是否有效。有效字符串需满足:
(1) 左括号必须用相同类型的右括号闭合。
(2) 左括号必须以正确的顺序闭合。
#define DataType char
#define maxn 10010
struct Stack {
DataType data[maxn];
int top;
}gStk;
void StackClear(struct Stack* stk) {
stk->top = 0;
}
void StackPushStack(struct Stack *stk, DataType dt) {
stk->data[ stk->top++ ] = dt;
}
void StackPopStack(struct Stack* stk) {
--stk->top;
}
DataType StackGetTop(struct Stack* stk) {
return stk->data[ stk->top - 1 ];
}
int StackGetSize(struct Stack* stk) {
return stk->top;
}
bool StackIsEmpty(struct Stack* stk) {
return !StackGetSize(stk);
}
bool isLeft(char c){
return c=='{'||c=='['||c=='(';
}
bool match(char l,char c){
return l=='{'&&r=='}'||l=='['&&r==']'||l=='('&&r==')';
}
bool isvalid(char *s){
int i;
StackClear(&stk);
for(i=0;s[i];i++){
if(isLeft(s[i])){
StackPushStack(&stk,s[i]);
}else{
if(StackIsEmpty(&stk)){
return false;
}
if(mach(StackGetTop(&stk),a[i])){
StackPopStack(&stk);
}else{
return false;
}
}
}
return StackIsEmpty(&stk);
}
#给你一个字符串数组 words,找出并返回数组中的第一个回文字符串 。如果不存在满足要求的字符串,返回一个 空字符串 ""。回文字符串的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个 回文字符串 。
bool isPalindrome(char *word) {
int i;
int len = strlen(word);
for(i = 0; i < len/2; ++i) {
if(word[i] != word[len-1-i]) {
return false;
}
}
return true;
}
char * firstPalindrome(char ** words, int wordsSize){//这里二级指针等价于&words
for(int i = 0; i < wordsSize; ++i) {
if(isPalindrome(words[i])) {
return words[i];
}
}
return "";