11.5---含有空字符串的字符串查找(CC150)

注意,1,"" 和 " "。是不同的,空字符串指的是"";

2,注意String的compareTo。小于是指<0.并不是==-1;

仔细观察代码中注释掉的那一行错在哪里。

import java.util.*;

public class Finder {
   public static int findString(String[] a,int n, String key){
        int left = 0;
        int right = a.length - 1;
        while(left <= right){
            int mid = (left + right) / 2;

            while(mid < right && a[mid] == ""  ){
                mid++;
            }
            while(mid > left && a[mid] == "") {
                mid--;
            }

            if(key.equals(a[mid])) return mid;

        //else if(key.compareTo(a[mid]) == -1){
            else if(key.compareTo(a[mid]) < 0){
                right = mid -1;
            }
            else {
                left = mid + 1;
            }
        }

        return -1;
    }
}

时间: 2024-07-29 08:34:26

11.5---含有空字符串的字符串查找(CC150)的相关文章

5.9 在有序但含有空的数组中查找字符串

[题目]: 给定一个字符串数组strs[],在strs中有些位置为null,但在不为null的位置上,其字符串是按照字典顺序由小到大依次出现.再给定一个字符串str,请返回str在strs中出现的最左的位置 举例: strs=[null, "a", null, "a", null, "b", null, "c"], str="a",返回1 strs=[null, "a", null, &

Linux Shell字符串操作(长度\查找\替换)详解

在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$

PHP:字符串转数组,数组转字符串;字符串截取、替换、查找

字符串转数组$str = 'one|two|three|four'; print_r(explode('|', $str)); //explode 以字符串分割字符串到数组 $str = 'one two three'; //str_split 以位数分割 $arr1 = str_split($str); $arr2 = str_split($str, 3); print_r($arr1); print_r($arr2); 打印如下:Array ( [0] => o [1] => n [2]

python字符串方法之查找

str.find() str.rfind() [作用:类似index,查找字符] [英语:r=>right|右边,find=>寻找] [说明:返回一个新的整数,查找到的位置,找不到出现-1,index找不到要报错] In [190]: "The stars are not afraid to appear like fireflies.".find("vition")#不存在返回-1 Out[190]: -1 In [192]: "The st

含重复字符的字符串的全排列问题(Java)

本代码既可以输出重复和不重复字符串的全排列 /** * 含重复字符的字符串的全排列问题 * * */ public class S_28 { public static int count = 0; public static void main(String[] args){ char[] list = {'a','b','c'}; char[] list1 = {'a','b','b'}; //permutation(list); permutation(list1); System.out

C Primer Plus (第五版) 第十一章 字符串和字符串函数 编程练习

第十一章 字符串和字符串函数 编程练习 设计并测试一个函数,可以输入读取n个字符(包括空格.制表符.换行符),把结果存储在一个数组中,这个数组的地址通过参数来传递. #include <stdio.h> #define LEN 80 char * getch(char a[], int n); int main(void) { char a[LEN]; if (getch(a, 4)) puts(a); else printf("没有读取\n"); return 0; }

c之PAT刷体--字符串-01--从字符串中找到特定字符

字符串-01. 在字符串中查找指定字符(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 白洪欢(浙江大学) 输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c.如果找不到则输出"Not found":若找到则输出字符串S中从c开始的所有字符. 输入格式: 输入在第1行中给出一个不超过80个字符长度的.以回车结束的非空字符串:在第2行中给出一个字符. 输出格式: 在一行中按照题目要求输出结果. 输入样例

Python 常用的字符串,字符串格式化表达式

一: python3中常用的字符串方法:method 方法的调用语法: 对象.方法名(方法传参) 说明:方法的调用同函数的调用一样属于表达式. 常用字符串方法 方法                                       说明 S.isdigit()                     判断字符串中的字符是否全为数字 >>> a = '12345' >>> a.isdigit() True >>> S.isalpha()    

*字符串-05. 字符串循环左移

1 /* 2 * Main.c 3 * D5-字符串-05. 字符串循环左移 4 * Created on: 2014年8月19日 5 * Author: Boomkeeper 6 ********部分通过******* 7 */ 8 9 #include <stdio.h> 10 11 int main(void){ 12 13 char str[100]={0}; 14 int N=0; 15 int endIndex=99;//字符串的结尾标识符 16 17 gets(str); 18

字符串-04. 字符串逆序

1 /* 2 * Main.c 3 * D4-字符串-04. 字符串逆序 4 * Created on: 2014年8月19日 5 * Author: Boomkeeper 6 *******测试通过****** 7 */ 8 9 #include <stdio.h> 10 11 int main(void){ 12 13 char str[80]; 14 15 gets(str); 16 17 int i; 18 for(i=0;i<80;i++){ 19 if(str[i]=='\0