精华内容
下载资源
问答
  • 给定一字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。  输入描述: 每个测试输入包含1个测试用例 每个测试用例输入只有一行字符串,...
    给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。 
    
    输入描述:
    每个测试输入包含1个测试用例
    每个测试用例输入只有一行字符串,字符串只包括大写英文字母,长度不超过10000。




    输出描述:
    输出编码后的字符串

    import java.util.*;
    public class Main {
    
    
     
    public static void main(String[] args){
    Scanner scanner=new Scanner(System.in);
    String string=scanner.next();
    
    
    int count=1;
    int i=0;
    int length=string.length();
    for(i=0;i<length-1;i++){
    
    if(string.charAt(i)==string.charAt(i+1)){
    count++;
    }
    else{
    System.out.print(count);
    System.out.print(string.charAt(i));
    count=1;
    }
     
    }
    System.out.print(count);
    System.out.print(string.charAt(i));
    
    
    }
    }


    展开全文
  • 给定一字符串来代表一个学生的出勤记录,这个记录仅仅包含以下三个字符:‘A’:Absent 缺勤 ‘L’:Late 迟到 ‘P’:Present 到场。如果一个学生的出勤记录中不超过一个“A”(缺勤)并且不超过两个连续的“L”...

    字符串统计。给定一个字符串来代表一个学生的出勤记录,这个记录仅仅包含以下三个字符:‘A’:Absent 缺勤
    ‘L’:Late 迟到 ‘P’:Present 到场。如果一个学生的出勤记录中不超过一个“A”(缺勤)并且不超过两个连续的“L”(迟到),则这个学生会被表扬。否则,这个学生不会被表扬。
    根据用户提供的出勤记录,判断是否会被表扬。(请编程实现)

    def late(jilu):
        if len(jilu) - len(jilu.replace('A','')) > 1:
            return '不被表扬'
        for i in range(len(jilu) - 1):
            if jilu[i] + jilu[i+1] == 'LL':
                return '不被表扬'
        else:
            return '被表扬'
    print(late(str(input("请输入出勤记录:"))))
    
    展开全文
  • 给定一字符串计算式,计算结果

    千次阅读 2019-04-29 01:02:36
    给定一个计算式(包含加减乘除四则运算)字符串,计算结果 算法思想: 1)将操作数和操作符分别按顺序存放到数组中 此处我用到的方法是parseInt(str),此函数会返回字符串开头的整数;然后用字符串截取第一个...

       面试的一个题,当时只说了算法思路和大概实现步骤,现在我把完整的做出来,嗯嗯嗯,不晓得我这样算不算复杂,欢迎大家来建议,一起讨论讨论

    给定一个计算式(包含加减乘除四则运算)字符串,计算结果

    算法思想:

    1)将操作数和操作符分别按顺序存放到数组中

        此处我用到的方法是parseInt(str),此函数会返回字符串开头的整数;然后用字符串截取第一个字符str.substring(0, 1)就是操作符,两个步骤不能条换顺序
    

    2)遍历操作符数组,先计算优先级较高的*和/,所以用Array.includes("*","/")判断是否包含*和/,若有,找到一个,记住当前索引以及操作符就返回;

         记住当前索引既是为了找到当前的操作符,也是为了下一次遍历不从头开始,减小开销
    

    3)计算操作符原本相邻的两个操作数,进行相应的计算,存储单步结果

         
     将计算过的两个数从数组中删除,将单步结果插入到该位置;操作符同理保证操作数运算顺序不改变,操作符顺序不改变;

    4)返回计算最终结果

    因为最近在学习vue.js所以这个demo使用vue的相关语法写的,也主要是为了实时展现数据,方便。若大家有更好的方法,或对我的这个算法有建议,欢迎指教哦。qq:1358025287

    同时大家也可以到我的GitHub下载源码:

     

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<meta http-equiv="X-UA-Compatible" content="ie=edge">
    	<title>计算算式结果</title>
    	<script src="./js/vue.js"></script>
    </head>
    
    <body>
    	<div id="main">
    		<label for="request">请输入算式:</label><input type="text" name="request" id="" v-model="str">
    		<button @click="reset">重置</button>
    		<button @click="compute(str)">提交</button>
    		<label for="result">结果:</label><input type="text" name="result" id="" v-model="result">
    		<!-- 测验我的nums,和op是否存储成功 -->
    		<!-- <div>操作数依次是:{{nums}}</div>
    		<div>操作符依次是:{{op}}</div> -->
    
    	</div>
    	<script>
    		var vm = new Vue({
    			el: "#main",
    			data: {
    				str: '', //实时获取输入字符串
    				result: '', //存放计算结果
    				nums: [], //存放操作数
    				op: [] //存放操作符
    			},
    			methods: {
    				compute(str) {
    					// console.log(str);
    					//循环操作,将操作数和操作符分开
    					while (str.length) {
    						let num = parseInt(str);
    						this.nums.push(num);
    						let numstr = String(num);
    						str = str.substr(numstr.length);
    						// console.log(str);
    						if (str.length != 0) {
    							this.op.push(str.substring(0, 1));
    							str = str.substr(1);
    							// console.log(str);
    						}
    					}
    					// console.log(this.nums, this.op);
    					//找到‘*’或‘/’操作符
    					let index = 0;
    					let opr = '';
    					let result;
    					// console.log(111);
    					//当op数组不为空时调用searchOpr
    					while (this.op.length > 0) {
    
    						// 调用函数,找到对应的操作符以及索引
    						let m = this.searchOpr(index, this.op);
    						index = m[0];
    						opr = m[1];
    						// 计算结果
    						if (opr === "*") {
    							// 计算单步结果
    							result = this.nums[index] * this.nums[index + 1];
    							// 将计算了的两个值从nums中删除,
    							this.nums.splice(index, 2);
    							// 并将单步结果加入对应的位置,保证先后顺序不乱
    							this.nums.splice(index, 0, result);
    							// 删除计算了的操作符
    							this.op.splice(index, 1);
    							// console.log('*',this.nums,this.op);
    						} else if (opr === "/") {
    							result = this.nums[index] / this.nums[index + 1];
    							this.nums.splice(index, 2);
    							this.nums.splice(index, 0, result);
    							this.op.splice(index, 1);
    							// console.log('/',this.nums,this.op);
    						} else if (opr === "+") {
    							result = this.nums[index] + this.nums[index + 1];
    							this.nums.splice(index, 2);
    							this.nums.splice(index, 0, result);
    							this.op.splice(index, 1);
    							// console.log('+',this.nums,this.op);
    						} else if (opr === "-") {
    							result = this.nums[index] - this.nums[index + 1];
    							this.nums.splice(index, 2);
    							this.nums.splice(index, 0, result);
    							this.op.splice(index, 1);
    							// console.log('-',this.nums,this.op);
    						}
    					}
    					this.result = result;
    				},
    				// 选择操作符,并且找到操作符的索引
    				// 遍历操作符数组,先找到“*”和“/”,没有的话就从数组开头开始计算
    				searchOpr(index, op) {
    					let index1;
    					let opr = '';
    					if (op.includes("*", "/")) {
    						for (let i = index; i < op.length; i++) {
    							if (op[i] === "*") {
    								opr = '*';
    								index1 = i;
    								break;
    							} else if (op[i] === "/") {
    								opr = '/';
    								index1 = i;
    								break;
    							}
    						}
    					} else {
    						index1 = 0;
    						opr = op[0];
    					}
    					return [index1, opr];
    				},
    				// 点击重置,清除我所有的数据,而不需要刷新页面
    				reset() {
    					this.nums = [];
    					this.op = [];
    					this.result = "";
    					this.str = "";
    				}
    			}
    		});
    	</script>
    </body>
    
    </html>

     

    展开全文
  • 给定一字符串,问是否能通过添加一个字母将其变为回文串。 输入描述: 一行一个由小写字母构成的字符串字符串长度小于等于10。   输出描述: 输出答案(YES\NO).   输入例子: coco   输出例子: YES #...

    题目描述

    给定一个字符串,问是否能通过添加一个字母将其变为回文串。

    输入描述:
    一行一个由小写字母构成的字符串,字符串长度小于等于10

     

    输出描述:
    输出答案(YES\NO).

     

    输入例子:
    coco

     

    输出例子:

    YES

    题目不严谨,没说明是否可以在字符串中间插入,如果只是在首尾添加,我的方法是对的

    #include<iostream>
    #include<iomanip>
    #include<math.h>
    #include <vector>
    #include <string.h>
    using namespace std;
    bool isBackString(string str)
    {
    	int length = str.length();
    	char* a = new char[length+1];
    	strcpy(a,str.c_str());
    	int start = 0;
    	int end = length - 1;
    	while (start<end)
    	{
    		if (a[start] != a[end])
    			return false;
    		start++;
    		end--;
    	}
    	return true;
    }
    int main()
    {
    	string str;
    	while (cin >> str)
    	{
    		char cbegin = str[0];
    		char cend = str[str.length() - 1];
    		if (isBackString(str+cbegin))
    		{
    			cout << "YES" << endl;
    		}else if (isBackString(cend+str))
    		{
    			cout << "YES" << endl;
    		}
    		else
    		{
    			cout << "NO" << endl;
    		}
    	}
    
    	//system("pause");
    	return 0;
    }
    附上别人的代码,思路是通过删除字符,判断是不是回文,这个方法才是对的,
    另外判断是否是回文可以直接用用reverse函数,我不知道有这个函数。。
    其实如果直接反转字符串,再比较也是可以的
    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    /*判断是否为回文串*/
    bool isPalindrome(const string &str)
    {
    	string s = str;
    	reverse(s.begin(), s.end());
    	return s == str;
    }
    
    int main()
    {
    	string str;
    	while (cin >> str)
    	{
    		if (str.empty() || str.length() == 1)
    			cout << "YES";
    		else
    		{
    			int len = str.length();
    			string tmp;
    			bool ret = false;
    			for (int i = 0; i < len; ++i)
    			{
    				tmp = str.substr(0, i) + str.substr(i + 1);
    				if (isPalindrome(tmp))
    				{
    					ret = true;
    					break;
    				}//
    			}
    			if (ret)
    				cout << "YES" << endl;
    			else
    				cout << "NO" << endl;
    		}
    	}//while
    
    	return 0;
    }



    展开全文
  • 给定一字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 // leetcode.cpp : ...
  • 给定一字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为...
  • 给定一字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。 示例 2:输入: "cbbd" ...
  • 请编写字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。笔试会碰到这种题目,有的题目要求会多一,就是不许重新分配存储空间来临时...
  • strlen 计算给定字符串的长度

    千次阅读 2018-04-20 09:14:07
    strlen 计算给定字符串的长度来自度娘的解释。所作的仅仅是个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第字符串结束符'\0'为止,...
  • 个简单的与语言无关的mongoose插件,用于从给定字符串生成唯一的子弹。 开发任务清单 创建操作 单次更新操作 多次更新操作 安装 安装与任何其他npm软件包一样简单: $ npm install mongoose-simple-...
  • 字符串之子字符串查找

    千次阅读 2018-04-25 22:42:49
    字符串查找 字符串的一种基本操作就是子字符串查找:给定一段长度为N的文本text和一个长度为M的模式字符串pattern,在文本中找到一个和该模式相符的子字符串。解决该问题的大部分算法都可以很容易地扩展为找出...
  • 例题:下列给定程序中,函数fun的功能是:依次取出字符串中所有字母字符,形成新的字符串,并取代原字符串。 例如,输入的字符为“df67das4ad5s”,则输出结果应当是“dfdasads”。 注意:不要改动main函数,不能增行...
  •  给定一字符串类型的数组strs,请找到一种拼接顺序,使得将所有的字符串拼接起来组成的大字符串是所有可能性中字典顺序最小的,并返回这个大字符串。 【举例】  strs = [“abc”, “de”],可以拼接成 “abcde...
  • python字符串字符串处理函数及字符串相关操作

    万次阅读 多人点赞 2014-04-12 23:23:25
    http://blog.csdn.net/pipisorry/article/details/42085723字符串介绍python字符串表示Python除处理数字外还可以处理字符串字符串用单撇号或双撇号包裹:&gt;&gt;&gt; 'spam eggs' 'spam eggs' &...
  • #判断字符串是否为 回文字符串 str = input("a string:") #从键盘输入字符串 daoxu = str[::-1] #取str的倒序,中括号里的三个参数:上限,下限,步长 if str == daoxu: print("yes") else: print("no...
  • 最小的字符串

    千次阅读 2019-08-07 14:27:28
    给定一字符串S,我们可以把最后一个字符和第一个字符连在一起,形成一个字符环。 从任意两个字符之间切开字符环都可以得到一个字符串,一共可以得到|S|个字符串。 请你找出其中字典序最小的字符串。 输入 一个之...
  • 给定一字符串,需要取出所有之前曾经出现过的字符,只保留第一次出现的字符 分析与解题思路: 首先需要定义两个数组,分别为“输入的字符串数组”old[ ] 以及 “输出的字符串数组” new[ ]; 取old数组中的...
  • 串逐位和 给定一个由数字组成的字符串,我们希望得到它的各个数位的和。 比如:“368” 的诸位和是:17 这本来很容易,但为了充分发挥计算机多核的优势,小明设计了如下的方案:
  • 问题描述:给定一个仅包含’A’-’Z’的字符串,用下面的方法进行编码: (1)每个包含k个相同字符的子串要表示成”kX”,其中X是由唯一字符组成的子串。(2)如果某个子串的长度为1,则1忽略不写。 输入:第1行...
  • 小编童鞋最近接了个新需求,需要在MySql的字段中截取字符串中的特定字符,下面小编把我的核心代码分享给大家,对mysql 字符串截取相关知识感兴趣的朋友一起看看吧
  • 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce...
  •  给定两个字符串s和t(len(s)>len(t)),t可能是s的个子序列。求所有s的子序列集合中,有多少个子序列等于t。例如s="abbbcb",t="abc",结果为3,即在s的所有子序列集合中,有3个子序列为t。 分析  拿例子...
  • **给定一字符串,请你找出其中不含有重复字符的最长子串的长度。 如:输入abcabcbb 输出3 因为无重复最长字符串是“abc” 第一次看见这个问题时网上查找发现没有竟然没有C语言实现的代码 于是自己写了代码以及思路...
  • 给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。 class Solution { public: ...
  • Python字符串用空格隔开

    万次阅读 2018-07-05 10:58:37
    # 将字符中单词用空格隔开# 已知传入的字符串中只有字母,每个单词的首字母大写,# 请将每个单词用空格隔开,只保留第一个单词的首字母大写传入:“HelloMyWorld”# 返回“Hello my world”# 给定一字符串inStr = ...
  • JAVA实现随机获取字符串数组中的任意字符串 //随机返回字符串数组中的字符串 public static String RandomStr(String[] strs){ int random_index = (int) (Math.random()*strs.length); return strs[random_...
  • 查找两个字符串中的公共字符串

    千次阅读 2015-01-13 19:42:04
    功能:查找两个字符串中的公共字符串。 思路: 1、判断两个字符串的长度,如果s1.length()(),则交换值。 因为我们是在短的字符串中选取子字符串去匹配长的字符串,这样减少比较次数 2、使用substring()方法...
  • 给定字符串按照此规律排序。要求不允许用辅助空间,复杂度控制在O(N)。遍历遍就排好序。   设原来的的字符串为: RGBBGRRBRGRBBG   算法思路如下: 1)题目中要求不能增加辅助空间,所以交换两个字符的...
  • 字符串前缀:字典树(Trie)的应用

    千次阅读 2016-08-17 11:40:49
    给定一字符串类型的数组, 其中不含有重复的字符串, 如果其中某一个字符串是另一个 字符串的前缀, 返回 true; 如果没有任何一个字符串是另一个字符串的前缀, 返回 false
  • 最近上课时闲来无事,突然思考了一下个很无聊的问题。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,341
精华内容 60,136
关键字:

给定一条字符串