#给你一个下标从 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 "";