字符串中最长的连续出现的字符【指针练习】

简介: 链接:http://ica.openjudge.cn/zz/2/总时间限制: 1000ms  内存限制: 65536kB描述求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出第一个输入首先输入N,即测试...

链接:http://ica.openjudge.cn/zz/2/

总时间限制: 1000ms  内存限制: 65536kB
描述

求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出第一个

输入
首先输入N,即测试数据的组数
每组测试数据输入:
一行,一个不包含空白字符的字符串,字符串长度小于200
输出
一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开
样例输入
2
aaaaabbbbbcccccccdddddddddd
abcdefghigk
样例输出
d 10
a 1

代码一:不用指针 

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main(int argc, char *argv[])
 4 {
 5     int n,i,j,k,maxIndex;
 6     char str[205];
 7     char count1[205];
 8     int  count2[205];
 9     
10     freopen("data.in","r",stdin);
11     scanf("%d",&n);
12     for(i=0;i<n;i++)
13     {
14         scanf("%s",str);
15         //memset(count1,' ',sizeof(count1));
16         //memset(count2,0,sizeof(count2));
17         j=0;
18         count1[j]=str[0];
19         count2[j]=1;
20         for(k=1;str[k]!='\0';k++)
21         {
22             if(str[k]==count1[j])
23             {
24                 count2[j]++;
25             }
26             else
27             {
28                 j++;
29                 count1[j]=str[k];
30                 count2[j]=1;
31             }
32         }
33         
34         maxIndex=0;
35         for(k=1;k<=j;k++)
36         {
37             if(count2[k]>count2[maxIndex])
38             {
39                 maxIndex=k;
40             }
41         }
42         printf("%c %d\n",count1[maxIndex],count2[maxIndex]);
43     }
44     return 0;
45 }

代码二:用指针和链表。头插法构造链表  

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 struct obj
 4 {
 5     char ch;
 6     int num;
 7     struct obj *next;
 8 };
 9 int main(int argc, char *argv[])
10 {
11     int n,i,j,k;
12     char str[205];
13     struct obj *head,*temp,*p;
14     char maxCh;
15     int maxNum;
16     freopen("data.in","r",stdin);
17     scanf("%d",&n);
18     for(i=0;i<n;i++)
19     {
20         scanf("%s",str);
21         
22         head=temp=p=NULL;
23         
24         temp=(struct obj *)malloc(sizeof(struct obj));
25         temp->ch=str[0];
26         temp->num=1;
27         temp->next=NULL;
28         head=temp;
29         for(j=1;str[j]!='\0';j++)
30         {
31             if(str[j]==head->ch) head->num=head->num+1;
32             else
33             {
34                 temp=(struct obj *)malloc(sizeof(struct obj));
35                 temp->ch=str[j];
36                 temp->num=1;
37                 temp->next=NULL;
38                 
39                 temp->next=head;
40                 head=temp;
41             }
42         }
43         
44         
45         p=head;
46         maxCh=head->ch;
47         maxNum=head->num;
48         while(p!=NULL)
49         {
50             if(p->num>=maxNum)//注意:这里要有等号,因为题目要求多个相等值选第一个输出。这里是头插法,选最后一个输出即可。 
51             {
52                 maxNum=p->num;
53                 maxCh=p->ch;
54             }
55             p=p->next;
56         }
57         printf("%c %d\n",maxCh,maxNum);
58         
59         p=head;
60         while(p!=NULL)
61         {
62             temp=p;
63             p=p->next;
64             free(temp);
65         }
66     }
67     return 0;
68 }

 

相关文章
|
7月前
|
算法 C语言
通过指针引用字符串
通过指针引用字符串
90 1
|
7月前
|
C语言
C语言指针——练习
C语言指针——练习
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
124 4
|
7月前
|
存储 C语言
字符指针变量与字符数组的比较
字符指针变量与字符数组的比较
57 3
|
7月前
|
存储 C语言
字符指针作为函数参数
字符指针作为函数参数
73 2
|
7月前
DAY-2 | 哈希表、指针与区间划分:字符种数统计问题
```markdown ## 题干 [牛客网链接](https://www.nowcoder.com/practice/eb94f6a5b2ba49c6ac72d40b5ce95f50) ## 题解 1. **查表法(哈希表)**:利用数组标记出现过的 ASCII 值小于127的字符,首次出现计数,重复则忽略。 2. **指针与区间划分(回头法)**:遍历字符串,对每个字符检查其前所有字符是否重复,重复则不计数。 ## 方法总结 - 哈希表在去重问题中非常实用,可多做相关练习。 - 使用`continue`时注意避免死循环,确保循环变量会改变。 - 多回顾此类问题以巩固理解。 ```
48 2
|
6月前
|
C++
指针习题练习
指针习题练习
27 0
|
7月前
|
存储 C++
C++程序中的字符串与指针
C++程序中的字符串与指针
73 2
|
7月前
|
C语言
C语言指针与字符串
C语言指针与字符串
49 0
|
7月前
|
存储 C语言
C语言中的字符指针技术详解
C语言中的字符指针技术详解
82 0