gpt4 book ai didi

c - 如何检查一个字符串的第一个字母与同一字符数组内另一个字符串的最后一个字母

转载 作者:行者123 更新时间:2023-11-30 19:29:05 24 4
gpt4 key购买 nike

如何完成 canArrangeWords() 函数?

问题:给定一组单词,检查我们是否可以将它们排列在一个列表中,使得任何单词的最后一个字母和另一个单词的第一个字母相同。输入函数 canArrangeWords 应包含一个整数 num和单词数组 arrnum表示列表中单词的数量(1<=num<=100)arr 'a' - 'z' 之间应包含由小写字母组成的单词仅有的 。如果可以以这种方式排列单词,则返回 1;如果不能,则返回 -1。

Input : 4  pot ten nice eye
output : 1
input : 3 fox owl pond
output: -1

请帮我完成这个程序。**

#include<stdio.h>
#include<string.h>
int canArrangewords(int,char [100][100]);


void main(){
int n ,count=0 , i ;
char arrayS[100][100];
scanf("%d",&n);
for (i = 0; i < n; ++i)
{
scanf("%s",arrayS[i]);

}

for(i=0;i<n;i++)
{
printf("%s",arrayS[i]);
printf("\n");

}
printf("%c\n",arrayS[2][4]);

canArrangewords(n , arrayS);

}

int canArrangewords(int n,char arrayS[100][100]){


int i , j ;
for ( i = 0; i < n; i++)
{
for ( j = i+1 ; j < strlen(arrayS[j+1]); i++)
{
int flag = strlen(arrayS[j+1]) - 1;
int temp = strcmp(arrayS[i][0],arrayS[j][flag]);



}

}


}



}

最佳答案

好吧,首先想想如何才能得到这个答案。

如果您只需要知道它们是否可以排列,而您不必自己这样做,则可以对每个字母 a-z 使用 int array[26] 的空数组。

规则是,在所有单词的所有第一个和最后一个字母中,只有两个字母可能出现奇数次 - 列表中第一个单词的第一个字母和列表中最后一个单词的最后一个字母,其余的必须出现均匀的次数。我会添加一个检查以确保字母也是小写的。祝你好运!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MINASCII 97
#define LETTERS 26
void UpdateArray(char letter, int* arr)
{

if(arr[letter - MINASCII] == 0)
{
++arr[letter - MINASCII];
}
else
{
--arr[letter - MINASCII];/*for each second time same letter is seen reduce back to zero */
}
}
int canArrangewords(int wordNum, char* wordArr[])
{
int arr[LETTERS] = {0};
int i = 0;
int count = 0 ;
char first;
char last;
char* string;
for (i= 0; i< wordNum; ++i)
{
string = wordArr[i];
first = string[0];
last = string[strlen(string)-1];
UpdateArray(first, &arr[0]);
UpdateArray(last, &arr[0]);
}

for(i = 0; i< LETTERS; ++i)
{
count+=arr[i];
}
if(count == 2 || count == 0)/*either once each or twice -see word1 example in main*/
{
return 1;
}
return -1;
}


int main()
{
int i = 0;
char* words[] = {"pot", "ten", "nice", "eye"};
char* words1[] = {"pot", "ten", "nip"};
char* words2[] = {"fox", "owl", "pond"};
i = canArrangewords(4,words);
printf("%d\n", i);
i = canArrangewords(3,words1);
printf("%d\n", i);
i = canArrangewords(3,words2);
printf("%d\n", i);
return 0;
}

关于c - 如何检查一个字符串的第一个字母与同一字符数组内另一个字符串的最后一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53265589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com