C语言输入五个字符串,找出最长的字符串,长度不够的在字符左边用*补齐后输出?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言输入五个字符串,找出最长的字符串,长度不够的在字符左边用*补齐后输出?相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<string.h>
int main()
char a[6][50],s[50];
int max=0;
for(int i=0;i<5;i++)
gets(a[i]);
if(strlen(a[i])>max)
max=strlen(a[i]);//记录最长字符串的长度;
strcpy(s,a[i]);//记录最长的字符串
printf("max=(%s)\\n",s);
for(int i=0;i<5;i++)
printf("%s",a[i]);
for(int j=0;j<max-strlen(a[i]);j++)
printf("*");
printf("\\n");
return 0;
参考技术A 字符串长度有专门的函数len,两长度定义成l1,l2,...l5
判断大小,得出最大的,
开始循环输出,
For(i=0,i<zuida-l1,i++)
Printf('*')
For(,i<l1,i++)
Printf(%s,str[i-zuida+l1])
....
leetCode第3题(找出字符串中不含有重复字符的最长子串的长度)
一、题目
给定一个字符串str,请你找出其中不含有重复字符的最长子串的长度
示例1
输入: str=“abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是"abc",所以其长度为3
示例2
输入: str=“bbbbb”
输出: 1
解释:因为无重复字符的最长子串是"b",所以其长度为1
示例3
输入: str=“pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是"wke",所以其长度为3
示例4
输入: str=""
输出: 0
二、题目代码解析
package com.xz.leetcode.day3;
import java.util.HashSet;
import java.util.Set;
/**
* @description: 给定一个字符串str,请你找出其中不含有重复字符的最长子串的长度
*
* 示例1
* 输入: str="abcabcbb"
* 输出: 3
* 解释: 因为无重复字符的最长子串是"abc",所以其长度为3
*
* 示例2
* 输入: str="bbbbb"
* 输出: 1
* 解释:因为无重复字符的最长子串是"b",所以其长度为1
*
* 示例3
* 输入: str="pwwkew"
* 输出: 3
* 解释: 因为无重复字符的最长子串是"wke",所以其长度为3
*
* 示例4
* 输入: str=""
* 输出: 0
* @author: xz
* @create: 2021-07-27 22:11
*/
public class Demo {
public static void main(String[] args) {
String str="abcabcbb";
int length=lengthOfLongestSubString(str);
System.out.println("不含有重复字符的最长子串的长度: "+length);
}
public static int lengthOfLongestSubString(String str){
//定义一个哈希集合,记录每个字符是否出现过
Set<Character> set =new HashSet<>();
//右指针的初始值为0,相当于我们在字符串的左边界第一个字符
int rk =0;
//最长子串的长度,初始值为0
int ans=0;
for(int i=0;i<str.length();++i){
if(i != 0){
//左指针向右移动一格,移除一个字符
set.remove(str.charAt(i-1));
}
//不断的移动右指针
while(rk < str.length() && !set.contains(str.charAt(rk))){
//添加到set集合中
set.add(str.charAt(rk));
++rk;
}
//计算最大值
ans=Math.max(ans,rk-i);
}
return ans;
}
}
2、输出结果
以上是关于C语言输入五个字符串,找出最长的字符串,长度不够的在字符左边用*补齐后输出?的主要内容,如果未能解决你的问题,请参考以下文章
C语言题目找出最长的字符串. 输入5个字符串,输出最长的那个字符串。输入字符串调用scanf()