iOS 数组中查找字符串

NSArray *helloWorld = @[@"world",@"hello"];
NSString *hello_Constant = @"hello";
NSString *helloFormate1  =[NSString stringWithFormat:@"%@llo",@"he"];

NSInteger indexConstant  = [helloWorld indexOfObject:hello_Constant];
NSInteger indexFormate1  = [helloWorld indexOfObject:helloFormate1];
hello_Constant及helloFormate1的字符串相同,地址不同

神奇的是两者在数组中的index竟然是相同的

这就说明数组中的对象并不只是比较的对象的地址,还判断了字符串是否相等

以后在数组中寻找某个字符串 不需要再遍历数组 再调用 isEqualToString 方法啦 :)
时间: 2024-10-11 05:57:03

iOS 数组中查找字符串的相关文章

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, &

在一个升序的但是经过循环移动的数组中查找指定元素

数组是升序的,数组经过循环移动之后,肯定是有左半部分或者有半部分还是升序的. 代码: public class SearchRotateArray { public static int search(int a[], int l, int u, int x) { while(l<=u){ int m = (l+u)/2; if(x==a[m]){ return m; }else if(a[l]<=a[m]){ //左半部分升序排列 if(x>a[m]){ l=m+1; }else if

java语言在某个数组中查找某个字符出现的次数

package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 在某个字符数组中查找某个字符出现的次数 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符:"); char a = sc.ne

输入一个有序数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字

输入一个有序数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.如果有多对数字的和等于输入的数字,输出任意一对即可.例如输入数组1.2.4.7.11.15和数字15.由于4+11=15,因此输出4和11. 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void findTwo(int *array, int len, int sum) 5 { 6 int beg = 0; 7 int end = len-1; 8 int

C++在已排序数组中查找和值确定的第一次出现的两个数(要求时间复杂度为o(n))

#include <iostream> using namespace std; //输入一个已经按升序排序过的数组和一个数字, //在数组中查找两个数,使得它们的和正好是输入的那个数字. //要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出任意一对即可. //例如输入数组1.2.4.7.11.15和数字15.由于4+11=15,因此输出4和11. void Grial(int a[],int x,int y) { int j=x-1; int i=0; while(a[j]&

在左移的递减数组中查找某数 【微软面试100题 第四十八题】

题目要求: 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1,}左移两位形成的,在这种数组中查找某个数. 题目分析: 方法1 逐个查找,遍历一遍数组,时间复杂度O(N). 方法2 二分查找,时间复杂度O(logN).具体分析见下图: 代码实现: #include <iostream> using namespace std; int Helper(int a[],int k,int s,int t); int FindKInArray(int

【编程题目】一个数组是由一个递减数列左移若干位形成的,在这种数组中查找某一个数。☆

48.微软(运算):一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数. 我的思路: 非常麻烦:先是用二分法找最大的数的位置,再定位要找的数在哪个递减区间里,最后用普通的二分查找法找到.代码如下: /* 48.微软(运算): 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5} 是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数. */ #include <stdi

14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)

待完善! 转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4259199.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是O(n).如果有多对数字的和等于输

输入一个已经按升序排序的数组和一个数字 ,在数组中查找两个数,使得他们的和是输入的那个数字

package shuzu; /* * 输入一个已经按升序排序的数组和一个数字 * 在数组中查找两个数,使得他们的和是输入的那个数字,要求时间复杂度为o(n) * 如果有多对数字的和等于输入的数字,输出任意一对即可. */ public class demo1 { private static void findAns(int[] data,int sum) { int size=data.length; int begin =0; int end=size-1; while(begin < s